Это мой код:
#define LEN 40
#define STUDLIST "./students.txt"
int main()
{
FILE * studd;
char del[] = "" " '\n'";
char name[LEN], surname[LEN], str[LEN];
char *ret;
char *tokens[2] = {NULL};
char *pToken = str;
unsigned int i = 0;
/* open file */
if ( (studd = fopen(STUDLIST,"r") ) == NULL )
{
fprintf(stderr, "fopen\n");
exit(EXIT_FAILURE);
}
while((ret = fgets(str, LEN, studd)))
{
if(ret)
{
for( tokens[i] = strtok_r( str, del, &pToken ); ++i < 2;
tokens[i] = strtok_r( NULL, del, &pToken ) );
strcpy(name, tokens[0]);
strcpy(surname, tokens[1]);
printf( "name = %s\n", name );
printf( "surname = %s\n", surname );
}
fflush(studd);
}
fclose(studd);
return 0;
}
Здесь находится файл Students.txt: http://pastebin.com/wNpmXYis
Я не понимаю, почему вывод не так, как я ожидал.
Я использую цикл для чтения каждой строки с помощью fgets , затем у меня есть строка, составленная из [Имя Фамилия] , и я хочу разделить ее на две разные строки ( [ имя] и [фамилия ) с использованием strtok_r . Я пробовал со статической строкой, и она работает хорошо, но если я читаю много строк из FILE, вывод будет неправильным, как вы можете видеть здесь:
http://pastebin.com/70uPMzPh
Где моя вина?