fgets が 1 行だけを読み取るように、mygets 関数を使用してみました。
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
単一のリンクリストを使用して、次の名前の typedef 構造体に保存する*mygets
まで読み取り専用にしたかっただけです。John Smith
client
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 を使用しています