Я создал эту программу, которая сначала спросит, сколько у вас домашних животных, а затем сохраняет имя и возраст каждого питомца в структуре (все с помощью связанных списков).Запись данных из связанного списка в txt-файл в C
Мой вопрос: Я пытаюсь записать данные в .txt-файл, используя процедуру writeToFile()
, но после выполнения. TXT-файл не содержит никаких данных. Я не понимаю, почему?
Это мой код:
#include <stdio.h>
#include <stdlib.h>
struct Node {
char *name;
int age;
struct Node *next;
};
struct Node * petRecord;
struct Node * newRecord;
void printPetRecord()
{
while(petRecord != NULL)
{
printf("Name of Pet: %s\n", petRecord->name);
printf("Age of Pet: %d\n", petRecord->age);
petRecord = petRecord->next;
}
}
void writeToFile()
{
FILE * fptr;
fptr = fopen("petnames.txt", "w");
if(fptr==NULL)
{
printf("Error\n");
}
else
{
while(petRecord != NULL)
{
fprintf(fptr, "\nPet Name: %s\nAge: %d\n", petRecord->name, petRecord->age);
petRecord = petRecord->next;
}
}
fclose(fptr);
}
int main()
{
int count, i;
printf("How many pets do you have? ");
scanf("%d", &count);
for(i=0; i<count; i++)
{
if(i==0)
{
petRecord = malloc(sizeof(struct Node));
newRecord = petRecord;
}
else
{
newRecord->next = malloc(sizeof(struct Node));
newRecord = newRecord->next;
}
newRecord->name = malloc(50*sizeof(char));
printf("Name of Pet: ");
scanf("%s", newRecord->name);
printf("Age of Pet: ");
scanf("%d", &newRecord->age);
}
newRecord->next = NULL;
printf("\n\n");
printPetRecord();
writeToFile();
}
Вы пытались распечатать его на стандартный вывод, а? –
Не используйте глобальные переменные. –
@ Katrina: вы потеряли головку своего списка, когда вы перебираете напрямую глобальную переменную – developer