Я читаю из текстового файла и сохраняю каждый элемент в связанном списке. однако, когда программа достигает символа возврата или новой строки, программа возвращает ошибку.Как игнорировать новую строку в .txt файле в c
чтение из текстового файла и хранение в структурах. Я замечаю ошибку, когда я печатаю каждую структуру на экране, программа печатает последнюю структуру до того, как возвращается возвращаемый символ, а затем завершает работу.
int main(int argc, const char * argv[]) {
printf("Hello!\n");
char filename[] = "artist.txt";
print_artists(read_artists(filename));
return 0;
}
struct artist *read_artists(char *fname)
{
int maxlen = 225;
int artid = 0;
int altartid = 0;
int pc = 0;
char artname[80];
char data[maxlen];
int valid = 0; // 0 acts as true 1 acts as false
int checkresult = 0; //checks result of sscanf
struct artist *temphead = create_artist(0,0,0,"0");
FILE *fp = fopen(fname ,"r");
if (fp != NULL)
{
while (fgets(data,maxlen,fp))
{
checkresult = sscanf(data,"%d\t%[^\t\n]\n",&artid,artname);
if (checkresult == 2)
{
struct artist *b = NULL;
b = create_artist(artid,altartid,pc,artname);
temphead = add_artist(temphead,b);
}
else
{
printf("error checkresult = %d\n",checkresult);
printf("break out of loop valid = 1\n");
valid = 1; // acts as boolean variable
break; //breaks out of the while(fgets)
}
}
fclose(fp);
return (temphead);
}
else
{
fclose(fp);
printf("File Error\n");
return (NULL);
}
}
void print_artists(struct artist *head)
{
if (head != NULL)
{
struct artist *temp = head;
while (temp -> next != NULL)
{
print_artist(temp);
temp = temp -> next;
}
print_artist(temp);
}
}
Это выход
текстовый файл я читаю от
Вы говорите, ошибки программы или что 'Е («error checkresult =% d \ n», checkresult); 'напечатан? – chux
Примечание: лучше не называть' fclose (fp) 'когда' fp == NULL'. – chux
ошибки программы abort6, и я попытался отбросить это, почему я 've addedprintf («error checkresult =% d \ n», checkresult); – ProtectorOfUbi