Вот небольшая программа, которая использует strtok()
для анализа строк с разделенными запятыми значениями.Это может помочь вам увидеть, что происходит (например, проблема с пустыми полями, которые поднял Жиль).Это также поможет вам увидеть, что происходит с пустыми строками.
Скомпилируйте его и отправьте ему пример данных либо с клавиатуры, либо перенаправив в него файл данных:
#include <stdio.h>
#include <string.h>
char* myGetLine( char* buf, size_t bufSize, FILE* strm)
{
char* result = fgets( buf, bufSize, strm);
int len = result ? strlen(result) : 0;
if (len && result[len - 1] == '\n') {
// get rid of the pesky newline
result[len - 1] = '\0';
}
return result;
}
int main(void)
{
char line[80];
while (myGetLine( line, sizeof(line), stdin)) {
int i = 0;
char* token = NULL;
printf( "%s\n", line);
token = strtok( line, ",");
while (token != NULL) {
printf( "token %d: \"%s\"\n", i, token);
++i;
token = strtok( NULL, ",");
}
printf( "%s\n", "enter a new line (or EOF)");
}
return 0;
}