-3
したがって、私はcsvファイルからいくつかのデータを読みたいと思います。Cでのファイル読み込みの不思議な動作
しかし、fgetsは私にwhileループでNULLを与え続けます。 whileループの外側でうまく動作します。
多分私はここで何かが分かりません。
編集:ここでは作業コードがあります:私はちょうどコード
int main(int argc, char *argv[])
{
FILE *input_file = fopen("free-zipcode-database-Primary.csv","r");
char buffer[1024];
if (input_file == 0) {
fprintf(stderr,"Cannot open input file.\n");
}
int count = 0; // to skip the first line in csv that contains the titles
while (1)
{
if (count == 0)
{
continue;
}
if (fgets(buffer, 1024, input_file) != NULL)
{
puts(buffer);
parseDataFromCSV(buffer);
} else {
break;
}
count++;
}
fclose(input_file);
return 0;
}
編集をクリーンアップ。
FILE *input_file = fopen("free-zipcode-database-Primary.csv","r");
char buffer[1024];
if (input_file == 0)
{
fprintf(stderr,"Cannot open input file.\n");
}
/* skip the first line in csv file */
fgets(buffer, 1024, input_file);
while (1)
{
if (fgets(buffer, 1024, input_file) != NULL)
{
puts(buffer);
parseDataFromCSV(buffer);
bzero(buffer,1024);
break;
} else {
break;
}
}
fclose(input_file);
'が、 '(関数fgets(バッファ、1024、INPUT_FILE)== NULL)は' '=を持っている場合= '。それは目的ですか? – Downvoter
最初の呼び出しで 'buffer'に何文字読み込まれますか?おそらく、EOLキャラクターが認識されず、すべてが1行にあるように見えますか?また、書かれた方法では、最初の行はループの外で読み込まれ、2行目は3行目以降は処理されずにスキップされます。 –
@Downvoterはい、fgetsがNULLを返すかどうかをチェックすることですが、なぜそれがわかりません。コードを編集します。 – user234159