
c言語のソースコードなのですが、コメントアウトではなくてこのコードの説明をしたいんですが上手くまとめられないので教えていただきたいです。
#include <stdio.h>
#include <string.h>
#define NUM 7
#define nfile "a0.txt" //name.txt
#define bfile "a0.bin" //shain.bin
#define outfile "a1.txt" //bunya.txt
char name[NUM][32];
int d[NUM][4];
int read(char *fn, int type) {
FILE *fi;
int i=0;
if(type==0) {
if((fi=fopen(fn, "r"))==NULL)return 1;
while(fscanf(fi, "%s", name[i])==1) {
//printf("%s\n",n[i]);
i++;
if(i>NUM)break;
}
} else {
if((fi=fopen(fn, "rb"))==NULL)return 1;
while(fread(d[i], sizeof(int), 4, fi)==4) {
//printf("%d %d %d %d\n",d[i][0],d[i][1],d[i][2],d[i][3]);
i++;
if(i>NUM)break;
}
}
fclose(fi);
return 0;
}
int write(char key, int n) {
FILE *fo;
char *po[]= {"東京", "埼玉", "神奈川"};
int i;
if((fo=fopen(outfile, "w"))==NULL)return 1;
fputs("社員番号,所属,分野,年齢\n", fo);
puts("社員番号,所属,分野,年齢");
for(i=0; i<n; i++) {
if(d[i][2]==key) {
fprintf(fo, "%d,%s,%c,%d,%s\n",
d[i][0], po[d[i][1]], d[i][2], d[i][3], name[i]);
printf("%d,%s,%c,%d,%s\n",
d[i][0], po[d[i][1]], d[i][2], d[i][3], name[i]);
}
}
return 0;
}
int main(int argc, char *argv[]) {
char ss[]="MSE";
if(argc<2) {
puts("ERROR: command");
return 1;
}
if(strchr(ss, argv[1][0])==NULL) {
puts("ERROR: command");
return 2;
}
if(read(nfile, 0)) {
puts("ERROR: file open or read.");
return 3;
}
if(read(bfile, 1)) {
puts("ERROR: file open or read.");
return 4;
}
if(write(argv[1][0], NUM)) {
puts("ERROR: file write.");
return 5;
}
return 0;
}
問題はこのようになっております。
次のようなデータ構造をもつバイナリファイル『shain.bin』と
氏名リストが記載されたテキストファイル『name.txt』を読み
込み、社員データとして構造体shainに社員番号、所属、分野、
年齢、氏名の要素で情報を格納する。
コマンドライン入力で分野情報(M・S・E)を入力し、
指定された分野の社員情報をテストファイル『bunya.txt』に出
力する。(出力例の表記で出力する)
No.4ベストアンサー
- 回答日時:
部分部分のコードの内容の説明 / Visual Studio で実行する場合
https://learn.microsoft.com/ja-jp/cpp/preprocess …
https://learn.microsoft.com/ja-jp/cpp/preprocess …
https://learn.microsoft.com/ja-jp/cpp/c-language …
https://learn.microsoft.com/ja-jp/cpp/c-language …
https://learn.microsoft.com/ja-jp/cpp/c-language …
https://learn.microsoft.com/ja-jp/cpp/cpp/functi …
https://learn.microsoft.com/ja-jp/cpp/cpp/return …
https://learn.microsoft.com/ja-jp/cpp/cpp/if-els …
https://learn.microsoft.com/ja-jp/cpp/cpp/while- …
https://learn.microsoft.com/ja-jp/cpp/cpp/break- …
https://learn.microsoft.com/ja-jp/cpp/cpp/for-st …
https://learn.microsoft.com/ja-jp/cpp/c-runtime- …
https://learn.microsoft.com/ja-jp/cpp/c-runtime- …
https://learn.microsoft.com/ja-jp/cpp/c-runtime- …
https://learn.microsoft.com/ja-jp/cpp/c-runtime- …
https://learn.microsoft.com/ja-jp/cpp/c-runtime- …
https://learn.microsoft.com/ja-jp/cpp/c-runtime- …
https://learn.microsoft.com/ja-jp/cpp/c-runtime- …
コード全体の説明
問題文を実装しようとしているが、問題文にない件数制限があったり、バグでプログラムが暴走する恐れがあったりと、品質が悪いので改善が必要。
No.3
- 回答日時:
> 問題はこのようになっております。
> ~
説明文はおおむねOK、まとまってるからこのままで良いと思います。
細かい仕様とか分からんし、コードが合ってるかどうかは知らんけど、実行して結果OKなら合ってる事が多い。
No.1
- 回答日時:
「コメントアウト」とはソースコードの不要部分をコメントにしてコンパイル時に無視されるようにすることです。
したがって「コメントアウトではなくてこのコードの説明をしたい」では日本語として意味がわかりません。
ちなみにソースコードは全て1カラム目から格の意ではなく、it文、for文、while文などでは4文字分とか一定文字数のインデント(字下げ)をして見やすくすると解読も説明も各段にしやすくなります。
参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列をnビットシフトする
-
コンパイルエラー invalid ope...
-
strsetという関数
-
引数の渡し方と受け方(argv)
-
Win32APIでのエディットボック...
-
memset の第2引数の型
-
DxLibについて質問です
-
2進数でのシリアル通信
-
中置記法の問題なのですが…
-
for next文、do while文、if文...
-
ncursesで...
-
【至急】C言語の問題です、どな...
-
最早開始時間と最遅完了時刻を...
-
C言語 エラーの原因がわからな...
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
For文の終了値を関数にしても問...
-
数学 一次関数 関数 y=-3/4x+k(...
-
std::set<int> で、ある値が何...
-
Enterキーを押されたら次の処理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字列から空白を取り除きたい...
-
C言語のfor文です。 繰り返しの...
-
CStringをwchar_tに変換したい
-
テキストデータをそのままバイ...
-
ネットワークにつながっている...
-
fgetsなどのときのstdinのバッ...
-
double型の値をchar配列に変換...
-
atoi( ) の反対をやりたい
-
charからLPTSTRへの変換方法
-
'const char *' 型は 'char *' ...
-
間接操作のレベルとは
-
c言語プログラミング実行時エラ...
-
c++ 文字列を入力して、一文字...
-
【C言語】構造体内の領域解放(...
-
間接参照のレベルが異なっています
-
C言語の入力した文字を反転させ...
-
構造体のアライメント調整
-
strncpyと_tcsncpy_sのヌルの扱...
-
TCP/IP通信型大文字・小文字変...
-
char型からのバイト数取得
おすすめ情報