Я попытался с помощью функции mygets так, что fgets будет читать только одну строку:Fgets из файла до конца строки
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
Использование одного linked- список, я просто хотел *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
.
*** Я использую Крошечные C на Windows,
Что я хотел, чтобы код должен был назначать каждую отдельную строку в переменные структуры Typedef. –
Но вы читаете только имя в своих 'mygets (client-> name, 40, filename);'. Вы должны также прочитать возраст, высоту, вес из файла и заполнить соответствующие поля вашей структуры. – zavg
Позвольте мне перефразировать мой вопрос, код должен ТОЛЬКО читать имя в моих 'mygets (client-> name, 40, filename);' но он читает ENTIRE содержимое файла ... –