Подсчет слов, букв в файле

231
30 декабря 2017, 04:12

Задача такая: подсчитать количество переменных в файле. Т.е. открыть файл и пройтись по строкам в поисках объявления переменных. пример:

    int a,b,c;
    double t;
    char p[20];

На выходе должно получиться 5.

Не получается пройти по строке. Код моей попытки ниже: ищу 'int' в строке, а дальше как пройти по ней не понимаю. мысль такая, что после нахождения строки с int, double и т.д. подсчитать количество запятых до точки с запятой, либо если 1 переменная, то если есть пробел и точка с запятой без запятых между, вооот

    char str[3] = "int";
    char y=',';
    while (1)
    {
    estr = fgets (buf,sizeof(buf),file_in);
    yes = strstr (buf,str);
    if(yes !=NULL)
      {
        for(i=0; estr!="\0";i++)
          {
           if(estr[i]== y)
            {
              countPer++;
             }
      }
    printf("%d",countPer);
      }         
        if (estr == NULL)
         {
           if ( feof (file_in) != 0)
         {  
          break;
         }
          else
         {
        break;
        }
        }
        }
        if ( fclose (file_in) == EOF) {printf ("ошибка\n");}
      else printf ("выполнено\n");
Answer 1

Кажется нашел в чем у тебя ошибка: в цикле, где ищешь запятые в строке у тебя условие estr != "\0". Сдесь нужно исправить на estr [i] != '\0'. Тобишь сравнивать не строки, а символы в строке.

READ ALSO
Помогите перевести выражение на язык С++ [требует правки]

Помогите перевести выражение на язык С++ [требует правки]

Нужно перевести это выражение на С++

262
Оператор перебора for C++

Оператор перебора for C++

В книге Липпмана не работает пример с перебором символов в строке:

226
Макросы в #pragma

Макросы в #pragma

Есть библиотека, которая компилируется под разные версии Visual C++ в разных режимах - динамическая, статическая, 64 и 32 разряда

237
Логика конструктора при наследовании

Логика конструктора при наследовании

Почему логика языка С++ позволяет производному классу пользоваться конструктором БЕЗ параметров базового класса, НО НЕ позволяет пользоваться...

390