いくつかのレコードをファイルに入力するための小さなプログラムを作成しました。
#include<stdio.h>
int main(void)
{
FILE *fp;
//opening a file to write
fp = fopen("try.rec","w");
if(fp == NULL)
{
printf("\nSorry! Couldn't Create File");
exit(-1);
}
int id = 1;
char name[300] = "Cipher", address[300] = "Virtual Street", phone[20] = "223322212";
fprintf(fp,"%d, %s, %s, %s", id, name, address, phone);
fclose(fp);
return 0;
}
さて、これにはエラーはありません。しかし、私はそのレコードを読むための小さなプログラムも作成しました。
#include<stdio.h>
int main(void)
{
FILE *fp;
fp = fopen("try.rec","r");
if (fp == NULL)
{
printf("Could not Access File. :(");
return -1;
}
int id;
char name[300], add[300], phone[20];
fscanf(fp, "%d , %s , %s , %s",&id, &name, &add, &phone);
fclose(fp);
printf("\nDetails from File try.rec\n---------------------------\nID: %d \nName: %s \nAddress: %s \nPhone: %s \n", id, name, add, phone);
return 0;
}
ただし、3番目の文字列を出力すると、ガベージ値が出力されます。深く掘り下げて、最初のプログラムで(最後に1つの余分なスペースを持って)置き換え"Cipher"
て"Cipher "
実行すると、2番目のプログラムの3番目の文字列はVirtual
(スペースの後には何も)出力せず、4番目の文字列は再びゴミになることがわかりました。
それで、Cでファイルから文字列を入れて取得する他の良い代替方法はありますか?または私は私のプログラムのいずれかで間違ったことをしていますか?
あなたの助けを期待して!
前もって感謝します。