C 从文件到行尾的FGET

C 从文件到行尾的FGET,c,fgets,C,Fgets,我尝试使用mygets函数,以便FGET只能读取一行: void * mygets(char *name, int len, FILE * stream) { fgets(name,len,stream); if (name[strlen(name) - 1] == 10) { name[strlen(name) - 1] = 0; } } 文件内容为: John Smith //Name 19 // Age 175.62 // Heigh

我尝试使用mygets函数,以便FGET只能读取一行:

void * mygets(char *name, int len, FILE * stream)
{
    fgets(name,len,stream);

    if (name[strlen(name) - 1] == 10)
    {
        name[strlen(name) - 1] = 0;
    }
}
文件内容为:

John Smith //Name

19 // Age

175.62 // Height

87  // Weight
使用单链表,我只想让
*myget
只读到
John Smith
,然后通过以下方式将其存储到名为
client
的typedef结构中:

typedef struct nodebase{
    char name[40]; //Just in case, the client's name can be long
    int age;
    double height;
    int weight;
    struct nodebase *next;
    }listnode;

int main()
{
listnode *head;
listnode *tail;
listnode *client;
FILE *f;

f=fopen("filename.txt","r");

while(!feof(filename))
{
    client = malloc(sizeof(listnode));
    mygets(client->name,40,filename);

    if (head == NULL)
    {
        head = client;
    }
    else 
    {
        tail->next=client;
    }
    tail = client;
    client =head;
}

while(client!=NULL)
{
    printf("\n%s\n",&client->name);
    client = client->next;
}

}
但问题是,程序会打印整个文件(包括年龄、身高和体重)

我找不到我的
*mygets
有任何问题


***我在Windows上使用Tiny C

您在问题中发布的代码中有很多打字错误

  • FILE*f
    声明不以分号结尾
  • 中的条件(client!NULL)
    不是有效的C条件,它应该是
    =那里
    
  • 头部
    尾部
    未声明
  • 我希望,顺便说一下,你有这个代码的工作版本


    关于您的问题,代码只是按照编写的方式工作-您的
    myget
    函数从文件中读取一行,因此在
    while(!feof(filename))
    循环中,您可以逐行读取文件内容(姓名、年龄、身高、体重),并将条目放入链接列表中。然后你只需从头到尾遍历链表就可以打印出来。

    你在问题中发布的代码中有很多打字错误

  • FILE*f
    声明不以分号结尾
  • 中的条件(client!NULL)
    不是有效的C条件,它应该是
    =那里
    
  • 头部
    尾部
    未声明
  • 我希望,顺便说一下,你有这个代码的工作版本


    关于您的问题,代码只是按照编写的方式工作-您的
    myget
    函数从文件中读取一行,因此在
    while(!feof(filename))
    循环中,您可以逐行读取文件内容(姓名、年龄、身高、体重),并将条目放入链接列表中。然后,您只需从头到尾遍历链表就可以打印出来。

    我想让代码做的是将每一行赋给Typedef结构中的变量。但是您在
    myget(client->name,40,filename)中只能读取名称。您还应该阅读文件中的年龄、身高、体重,并填写结构的相应字段。让我重新表述我的问题,代码应该只读取my
    mygets(client->name,40,filename)中的名称但它读取文件的全部内容…我想让代码做的是将每一行赋给Typedef结构中的变量。您还应该阅读文件中的年龄、身高、体重,并填写结构的相应字段。让我重新表述我的问题,代码应该只读取my
    mygets(client->name,40,filename)中的名称但它读取文件的全部内容。。。