为什么在我要求它时我的功能不能正常工作?

问题描述

我已经在下面编写了代码

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

我刚刚发布了您上一个问题的答案,请参考。

search string from file and store it in struct using c