私はテキストファイルを持っています。私はそれを1行ずつ読み込んで配列に入れたいと思っています。C:ファイルを配列に読み込む
コンパイル中スニペットは、背後にエラーを与える:
FILE *f;
char line[LINE_SIZE];
char *lines;
int num_righe;
f = fopen("spese.dat", "r");
if(f == NULL) {
f = fopen("spese.dat", "w");
}
while(fgets(line, LINE_SIZE, f)) {
num_righe++;
lines = realloc(lines, (sizeof(char)*LINE_SIZE)*num_righe);
strcpy(lines[num_righe-1], line);
}
fclose(f);
エラーは次のとおりです。
spese.c:29: warning: assignment makes integer from pointer without a cast
spese.c:30: warning: incompatible implicit declaration of built-in function ‘strcpy’
spese.c:30: warning: passing argument 1 of ‘strcpy’ makes pointer from integer without a cast
任意のヘルプ?
strcpy(lines[num_righe-1], line);
で
char * strcpy (char * destination, const char * source);
: おかげ
あなたが本当にあなたのプログラムにヘッダーの#includeを含める必要があります。あなたがしなかったことは良いことです。-fno-builtinは、あなたに警告することができず、プログラムはgccによって静かにコンパイルされていました。 –
私はif(!f)fopen( "spese.dat"、 "w")の値について疑いを持っています。部。この状態が発生した場合、fは書き込みのためにオープンされ、fgets()は成功できません。また、特に古いバッファを解放せずに失敗した場合にNULLを返すrealloc()の場合、もう少し多くのエラーチェックが良いことです。 @RBerteig。 – RBerteig
私は同意する、エラーチェックは現在から遠いです。 – Tom