1

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 Smithclient

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 を使用しています

4

1 に答える 1