我创建了一个小程序来将一些记录输入到文件中。
#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;
}
但是在打印第三个字符串时,它会打印垃圾值。我挖得更深,发现当我在我的第一个程序中替换"Cipher"
为"Cipher "
(最后有一个额外的空间)并运行它时,第二个程序中的第三个字符串只输出Virtual
(空格后没有任何内容)然后第四个字符串又是垃圾.
那么,有没有其他好的替代方法可以在 C 中从文件中放置和获取字符串。或者我在我的任何一个程序中都做错了什么?
期待您的帮助!
提前致谢。