C 从文件到行尾的FGET
我尝试使用mygets函数,以便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
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)中只能读取名称代码>。您还应该阅读文件中的年龄、身高、体重,并填写结构的相应字段。让我重新表述我的问题,代码应该只读取mymygets(client->name,40,filename)中的名称代码>但它读取文件的全部内容…我想让代码做的是将每一行赋给Typedef结构中的变量代码>。您还应该阅读文件中的年龄、身高、体重,并填写结构的相应字段。让我重新表述我的问题,代码应该只读取mymygets(client->name,40,filename)中的名称代码>但它读取文件的全部内容。。。