Ошибка, с которой я получаю навигацию к файлу strcat.asm и задает точку останова при входе в основной цикл. Метод readFile, который я создал, разбивается непосредственно перед тем, как строки обозначены в этом цикле strlen :strcat ошибка чтения csv-файла из структуры
while(!feof(fptr))
{
fgets(oneLine, CONTACT_MAX, fptr); // process the next line to be tokenized
if (oneLine[strlen(oneLine) - 1] == '\n')
{
oneLine[strlen(oneLine) - 1] = '\0';
}
sn = strtok(oneLine, " , ");
fn = sn ? strtok(NULL, " , ") : NULL;
ph = fn ? strtok(NULL, " , ") : NULL;
co = ph ? strtok(NULL, " , ") : NULL;
У кого-нибудь есть идеи, в которых я ошибаюсь?
Мои ReadFile() выглядит следующим образом:
struct contact *readFile(struct contact *ptrList)
{
struct contact *head = NULL;
struct contact *newContact;
FILE *fptr;
char oneLine[CONTACT_MAX];
char *sn, *fn, *ph, *co;
head = ptrList;
//open test.csv to be read
fptr = fopen("test.csv", "r");
if(fptr == NULL)
{
printf("\nCouldn't open %s...", "test.csv");
return(ptrList);
}
fgets(oneLine, CONTACT_MAX, fptr);
while(!feof(fptr))
{
fgets(oneLine, CONTACT_MAX, fptr); // process the next line to be tokenized
if (oneLine[strlen(oneLine) - 1] == '\n')
{
oneLine[strlen(oneLine) - 1] = '\0';
}
sn = strtok(oneLine, " , ");
fn = sn ? strtok(NULL, " , ") : NULL;
ph = fn ? strtok(NULL, " , ") : NULL;
co = ph ? strtok(NULL, " , ") : NULL;
if (head == NULL)
{
head = (struct contact *)malloc(sizeof(struct contact));
ptrList = head;
strcpy(head->fName,fn);
strcpy(head->sName,sn);
strcpy(head->phone,ph);
strcpy(head->company,co);
head->prev = NULL;
head->next = NULL;
}
else
{
newContact = (struct contact *)malloc(sizeof(struct contact));
head->next = newContact;
newContact->prev = head;
newContact->next = NULL;
strcpy(newContact->fName, fn);
strcpy(newContact->sName, sn);
strcpy(newContact->phone, ph);
strcpy(newContact->company, co);
head = newContact;
} // end of (ptrList == NULL)
} // end of while(!feof(fptr))
fclose(fptr);
return(ptrList);
}
Формат файла выглядит так:
Фамилия, FirstName, номер, компании
в Builder, Bob, 1234567, Bob's
Unknown, совок, 8765645, Боба
Не проверял ваш код, но предлагая из вашего описания, это может быть не оконечная строка, которая делает проблему, не так ли? – dhein
Может случиться так, что ваш первый вызов strtok имеет указатель NULL в качестве параметра? или ваш главный код избегает этого? – dhein