こんにちは私は、Cプログラムでfgetsを使用して、名前が.csvファイルの行に存在するかどうかを確認しています。存在する場合は、配列に保存してから返します。現在、.csvファイルのすべての行が保存されており、理由はわかりません。fgetsを使用して、この行が.csvファイルに存在するかどうかを調べるにはどうすればよいですか? (C)
Cファイル:
void FindRecord(char *filename, char *name, char record[]) {
char *temp = record; //temp save record
FILE *q = fopen(filename, "r"); //check that ths inputed .csv file exists
if (q == NULL) { //if it doesn't, then print error message and exit
printf("This .csv does not exist");
exit(1); //terminate with error message
}
while(!feof(q)) { //while I'm not at the end of the file
fgets(temp, 1000, q); //Reads a line @ a time
for (int i = 0; i < 1000; i++) {
if(temp[i] == *name) {
record[i] = temp[i];
name++;
}
}
printf("%s", record);
}
fclose(q);
}
.csvファイル:
Kevin, 123-456-7890
Sally, 213-435-6479
Megan, 415-336-8790
今私がプログラムを実行するときに起こっていただきましたが、それは3行を返すことです。今、私はプログラムが3行を返すことで実行したときに起こっていただきました!Kevin, 123-456-7890
[なぜwhile(!feof(file))が常に間違っているのですか?](https://stackoverflow.com/a/26557243/1983495)をお読みください。 –
なぜ 'fgets(temp、1000、q)'に1000があるのですか? 'record'はそれほど大きなものではありません。呼び出しコードを確認する必要があります。 – chux
'record'と' temp'は同じメモリを指していますので、 'record [i] = temp [i]'は役に立たないです。 'fgets(temp、1000、q);'ファイルから 'temp'と' record'に何でもロードします。 – yano