В настоящее время я получил задание сделать программу подсчета слов в c. Задача вашей программы должна считать символы, строки и слова. Строки должны учитываться, даже если они находятся внутри комментария. Комментарии должны быть представлены "" пробелом.
Я пытался использовать функцию переключения для реализации падежей внутри и снаружи слова. Но у меня проблемы с комментариями. В первом утверждении if я попытался проверить, есть ли мы в комментарии или нет, и если да, пропустите его.
#include <stdio.h>
#include <ctype.h>
#define word 1
#define nword 0
int main(void)
{
int c,d,nmb = 0 , state = nword , ch = 0, ln = 0;
while((c=getchar())!=EOF)
{
if( c == '/' )
{
if((d=getchar())=='*')
{
int f;
c = getchar();
d = getchar();
while(c!='*' || d !='/')
{
c = d;
d = getchar();
if(d == '\n')
{ ln++ ; ch++; }
if(d == EOF)
{ f=1 ; break; }
}
if(f==1)
printf("problem in line: %d\n", ln);
state=word;
nmb++;
}
}
switch(state)
{
case nword:
if(isspace(c))
{
state=word;
nmb++;
}
break;
case word:
if(!isspace(c))
state=nword;
break;
}
if (c == '\n')
ln++;
ch++;
}
printf("words: %d\n", nmb);
printf("chars: %d\n", ch);
printf("lines: %d\n", ln);
return 0;
}
Я не могу получить правильные ответы на тестовые случаи. Я тоже не могу отладить, потому что я не вижу определенного шаблона, который можно исправить. Некоторые тестовые случаи соответствуют правильным, но другие нет. (Тестовые примеры в https://ee209 -2019-spring.github.io / assignment / wc209 / )