Привет, я изо всех сил пытаюсь понять, что не так с моей программой. Мое лучшее предположение, что-то связанное с этой строкой кода здесь:
scanf("%s", str);
Дело в том, что я пытаюсь вызвать функцию, которая использует strtok для строки, переданной ей, набранной пользователем, все в течение некоторого времени l oop, как показано в примере кода ниже:
int i = 0;
char str[80];
while(i != 3){
printf("Type in some string so i can break it: ");
scanf("%s", str);
testFunc(str);
printf("Loop %i ended.\n", i);
i++;
}
return 1;
Результат (не то, что я хочу, смотрите ниже, что я на самом деле хочу):
Type in some string so i can break it: hey there how are you doing!
hey
Loop 0 ended.
Type in some string so i can break it:
there
Loop 1 ended.
Type in some string so i can break it:
how
Loop 2 ended.
Причина, по которой я думаю, что это вызвано строкой scanf, заключается в том, что программа работает нормально, когда вместо нее используется какая-то фиктивная предварительно объявленная строка
int i = 0;
while(i != 3){
char str[80] = "hey there how are you doing!";
testFunc(str);
printf("Loop %i ended.\n", i);
i++;
}
return 1;
Результат:
hey
there
how
are
you
doing!
Loop 0 ended.
hey
there
how
are
you
doing!
Loop 1 ended.
hey
there
how
are
you
doing!
Loop 2 ended.
Вот функция, которая использует strtok, большая часть кода взята из https://www.tutorialspoint.com/c_standard_library/c_function_strtok.htm
int testFunc(char linha[80]){
//
const char s[2] = " ";
char *token;
/* get the first token */
token = strtok(linha, s);
/* walk through other tokens */
while(token != NULL) {
printf("%s\n", token);
token = strtok(NULL, s);
}
return 1;
}
Я озадачен, похоже, что программа выполняет testFun c () параллельно с основной функцией.