I)は、(関数fscanfを使用してファイルから行を読み込むしようとしています:)(関数fscanfを使用して行を読み込む
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char c, *string[4];
int i = 0,j[4];
fp = fopen("boil.txt", "r");
c = fgetc(fp);
if(fp == NULL)
{ printf("File read error\n");
exit(0);
}
while(c != '\n')
{
fscanf(fp, "%s %d ", string[i] , &j[i]);
i++;
c = fgetc(fp);
}
for(i = 0; i < 4; i++)
{
printf("%s %d\n", string[i], j[i]);
}
}
boil.txtは以下の通りです:
boil 4 boilmilk 3 boilwater 5 heat 10
このプログラムはなぜセグメンテーションフォルトを与えるか?
、あなたの '文字列[i]は'ポインタがランダムな場所を指します。 –
ここでも注意してください.fgetcとfscanfはどちらも先にファイルポインタを移動します。あなたが望む文字が得られていない可能性があります。 – crlanglois
1)エラーチェックなし2) 'fgetc'は正当な理由で' char'ではなく 'int'を返します。 3)割り当てられたスペースはありません。 4)など5)[ask]を参照してください。 – Olaf