Программа не работает, а C - PullRequest
0 голосов
/ 12 апреля 2011

Следующий код дает мне нулевое значение для 'count' все время ...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 128

int main ()

{
    char mychar , string [SIZE];
    int i;
    int count =0 ;    

    printf ("Please enter your string: \n\n");
    fgets (string, SIZE, stdin);

    printf ("Please enter char to find: ");
    mychar = getchar();

    for (i=0 ; (string[i] == '\0') ; i++ )
        if ( string[i]  == mychar )
            count++;

    printf ("The char %c appears %d times" ,mychar ,count);

    return 0;
}

Спасибо!

Ответы [ 5 ]

3 голосов
/ 12 апреля 2011

Это

int const count =0 ;    

и это

count++;

конфликтует, значение переменной const не может быть изменено (поэтому оно называется константой)

2 голосов
/ 12 апреля 2011

Замените

int const count = 0;

на

int count = 0;

Вы пытаетесь изменить объявленную const переменную (count++), которая, очевидно, недопустима.

РЕДАКТИРОВАТЬ: Ответ на ваш обновленный вопрос заключается в том, что вы должны изменить условие цикла с string[i] == '\0' на string[i] != '\0'.Это связано с тем, что цикл выполняется , а условие истинно.string[i] != '\0' верно для всей строки, кроме завершающего нулевого байта, в то время как обратное верно для string[i] == '\0'.Следовательно, ваш первоначальный цикл не выполнялся ни разу.

0 голосов
/ 12 апреля 2011
 for (i=0 ; (string[i] == '\0') ; i++ )
        if ( string[i]  == mychar )
            count++;

Это означает, что цикл запускается до тех пор, пока string[i] == '\0', но string[i] также не может быть mychar (если mychar не равен \0), поэтому вы никогда не увеличите count.

Я думаю, что вы имели в виду:

for (i = 0; string[i] != '\0'; i++)
   if (string[i]  == mychar)
      count++;
0 голосов
/ 12 апреля 2011

Заменить == на != в string[i] == '\0'

0 голосов
/ 12 апреля 2011

Вы не можете изменить константу, поэтому int const count = 0; нельзя изменить с помощью const++;, для ее решения достаточно удалить ключевое слово const:

 int count = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...