Так что я некоторое время работал над программой «удалить комментарии» и добился прогресса, но очень минимален. Я новичок в C, поэтому я пишу его, используя некоторые основные функции и навыки. Входной файл для кода не требует каких-либо функций для чтения, а вместо этого передается в программу с использованием < в терминале.Нужна помощь в отладке этой программы C
Текстовый файл, который я использую содержит следующее:
some/* crazy */stuff
some/* crazy */ stuff
some/*crazy /*crazy*/*/stuff
"some /* crazy */ stuff "
some/* "crazy" */ stuff
some/* crazy stuff
Чтобы проверить различные форматы комментариев. Код, который я до сих пор:
#include <stdio.h>
#define IN_COMMENT 1
int main(int argc, char **argv)
{
int c;
while ((c=getchar())!=EOF)
{
if(c=='/'&&getchar()=='*')
{
while(c!='*' && getchar()!='/')
{
c = " ";
c= getchar();
}
}
if(c=='"')
{
c=getchar();
while(c!='"')
{
putchar(c);
c=getchar();
}
putchar(c);
}
}
putchar(c);
printf("done.\n");
return 0;
}
Дело в том, что я не могу понять способ установить условие, которое будет распечатать сообщение об ошибке, когда есть случай, в котором не будет запущен, но никогда комментарий закрыты, такие как (некоторые/* сумасшедшие вещи)
Другая проблема заключается в том, что я не могу показаться, чтобы найти ошибку, которая при запуске программы и введите текстовый файл опускает *, поэтому, когда я вход:
some/* crazy */stuff
some/* crazy */ stuff
some/*crazy /*crazy*/*/stuff
"some /* crazy */ stuff "
some/* "crazy" */ stuff
Я в конечном итоге получаю следующее: некоторые * вещи
some* stuff
some**/tuff
"some /* crazy */ stuff "
some* stuff
Я не могу найти способ исправить две проблемы. Профессор предложил другой способ написания программы, определив разные состояния, но когда я попытался, это было еще более запутанным.
Пожалуйста, помогите, как это должно быть в ближайшее время, как я могу исправить проблему * и что должно быть мое условие, чтобы я мог распечатать сообщение об ошибке для неполных комментариев?
Откуда эта строка '#define IN_COMMENT 1'? (Подсказка: * состояние *) – usr2564301
@ Jongware в основном профессор предложил использовать состояния, но я пробовал это и не мог понять, как они реализованы. –
Невозможно воспроизвести его. Ваш код не выводит то, что вы говорите. – Zenadix