问题描述
我已经在下面编写了代码
void readfile();
struct profile {
char name[30];
int age,phoneNo;
};
int main()
{
FILE* fPtr;
fPtr = fopen("profile.txt","a");
printf("\n\nPlease enter your details:");
struct profile c;
printf("\n\nEnter your name: ");
gets(c.name);
printf("\nEnter your age: ");
scanf("%d",&c.age);
printf("\nEnter your phone number: ");
scanf("%d",&c.phoneNo);
fprintf(fPtr,"%s,%dy,%d#\n",c.name,c.age,c.phoneNo);
fclose(fPtr);
readfile();
return 0;
}
上面的代码从用户那里接收数据并将其放入一个名为profile.txt的文本文件中,该文本文件中存储的记录如下所示:
James brown,37y,01123456789#
Mary Ann,45y,0123456749#
我在主程序中调用了函数readfile();
,但是该函数无法正常工作。 readfile();
的代码如下:
void readfile()
{
char fName[15],line[30];
FILE *f;
f = fopen("profile.txt","r+");
printf("Enter name: ");
fgets(fName,sizeof(fName),stdin);
while (fgets(line,sizeof(line),f)) {
fName[strcspn(fName,"\n")] = '\0';
if (strstr(line,fName) != NULL) {
printf("%s",line);
}
}
fclose(f);
}
在此功能中,我想搜索一个名称并打印出包含记录的整个字符串。但是当我执行代码时,代码fgets(fName,stdin);
似乎被忽略了,因为它不允许我输入要搜索的名称。相反,它只是打印出文件的所有内容全部,这违背了目的。当我使用没有其他代码的main()
调用此函数时,它工作得很好,所以我不确定为什么当我在main()
中有代码时,该函数停止以通常?如果有人可以指出如何解决我的代码中的问题,我将不胜感激。
解决方法
您将return 0
用于void readfile()
功能,请删除return 0
我刚刚发布了您上一个问题的答案,请参考。