У меня есть простой C-код для чтения файла. Прочитайте ввод строки за строкой. Обозначьте линию и распечатайте текущий токен. Моя проблема в том, что я хочу напечатать следующий токен, если выполняются некоторые условия. Вы не знаете, как это сделать. Мне действительно нужна ваша помощь для этого проекта. Спасибо Вот код:Доступ к следующему слову/строке
main(){
FILE *input;
FILE *output;
//char filename[100];
const char *filename = "sample1.txt";
input=fopen(filename,"r");
output=fopen("test.st","w");
char word[1000];
char *token;
int num =0;
char var[100];
fprintf(output,"LEXEME, TOKEN");
while(fgets(word, 1000, input) != NULL){ //reads a line
token = strtok(word, " \t\n"); // tokenize the line
while(token!=NULL){ // while line is not equal to null
fprintf(output,"\n");
if (strcmp(token,"SIOL")==0)
fprintf(output,"SIOL, SIOL", token);
else if (strcmp(token,"DEFINE")==0)
fprintf(output,"DEFINE, DEFINE", token);
else if (strcmp(token,"INTEGER")==0){
fprintf(output,"INTEGER, INTEGER");
strcpy(var,token+1);
fprintf(output,"\n%s,Ident",var);
}
else{
printf("%s\n", token);
}
token = strtok(NULL, " \t\n"); //tokenize the word
}}fclose(output);return 0;}
Вы пробовали 'strtok'? – artm
'strtok' - хороший вариант, но если вы правильно поняли, что хотите напечатать или не распечатать следующий на основе некоторого условия с текущим, то если вы разбираете строку в последовательном порядке, почему бы просто не пропустить в следующее пространство или новую строку в случае «без печати». Чтобы получить более подробную информацию, вам нужно будет отправить дополнительную информацию. Не зная, что вы сейчас делаете, резко ограничивает помощь, которую вы можете получить. –
да, это то, что я использовал для обозначения линии. Я могу распечатать текущий токен. Мне нужно распечатать следующий или предстоящий токен, если какое-то условие выполнено. Например, строка «Быстрая коричневая лиса» Текущий токен «The». Если (strcmp («The», «The») == 0) printf («быстрый»). –