Я пишу программу, в которой мне нужно читать токен по токену и определять определенные ключевые слова.Одним из этих ключевых слов является «gt», которое обозначает больше, чем.
Я разбил текстовый файл на токены по символам табуляции, перевода строки, пробела и возврата.Буфер - это просто большой массив символов.
char* word = strtok(buffer, " \n\t\r");
У меня есть несколько вариантов, чтобы проверить возможные слова.Gt заключается в следующем.Как ни странно, это работает для других ключевых слов и иногда даже для других вхождений «gt».
//gt
if(strcmp("gt", word) == 0){
type = GT;
literal_value = 0;
}
Однако, это не достигается, несмотря на ввод «gt».Я заметил, что когда я печатаю, это происходит
printf("WORD is %s!\n", word);
PRINTS "!ORD is gt"
Что явно не так.Если ответ очевиден, пожалуйста, дайте мне знать - эта ошибка давно уклоняется от меня!
обновленный фрагмент:
char * word = strtok(buffer, " \n\t\r");
while (word != NULL){
printf("word is %s!\n", sections); //PRINTS "!ORD is gt"
if(sections[0] == ';'){
break; //comment indicated by ';'
}
//gt
if(strcmp("gt", word) == 0){
type = GT;
literal_value = 0;
}
//...............
//other comparisons for less than, equal to
process(&curr, output_file); //function to process current token
word = strtok(NULL, " \n\t\r");
}