В настоящее время я реализую программу, в которой пользовательский ввод нажимает со значением или всплывает со значением.Чтобы разделить токены, я использую strtok()
.Все случаи в моей программе работают нормально, кроме случаев, когда пользователь вводит три значения: например, правильный допустимый ввод будет «push 5» или «pop».Например, когда пользователь должен ввести: «push 5 7», я хочу подсчитать, что есть 3 токена, и поэтому отклонить ввод.Программа через аргумент командной строки спрашивает, сколько строк пользователь введет через STDIN
, и, следовательно, у меня есть цикл for.С моим текущим счетчиком он всегда возвращает правильное количество токенов в первом цикле, но каждый цикл после него возвращает 0.
int main(int argc, char *argv[]){
int numlines = atoi(argv[1]);
for(int i = 1; i<= numlines; i++){
char str[256];
fgets(str,256,stdin);
str[strcspn(str, "\n")] = 0;
char *tmp;
char *token;
char *tmp2;
int count; //This is the counter for the tokens
tmp = strtok(str," ");
while(token != NULL){
tmp2 = token;
token = strtok(NULL, " ");
count++;
}
printf("%d\n", count);
}
Внизу есть еще код, который манипулирует токенами tmp и tmp2, но работает нормально.Опять же, счетчик работает для первого прохода, но всегда возвращает 0 после.Спасибо за помощь, ребята.