程序不能正常工作 - C

时间:2011-04-12 09:07:36

标签: c compiler-errors

以下代码始终为'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 个答案:

答案 0 :(得分:3)

这个

int const count =0 ;    

和这个

count++;

冲突,const变量的值不能改变(这就是为什么它被称为常量)

答案 1 :(得分:2)

替换

int const count = 0;

int count = 0;

您正在尝试更改声明为count++的变量(const),这显然是不允许的。

编辑:您更新的问题的答案是您应该将循环条件从string[i] == '\0'更改为string[i] != '\0'。这是因为循环运行条件为真。对于整个字符串,string[i] != '\0'为真,除了终止空字节,而string[i] == '\0'则相反。因此,您的原始循环不会运行一次。

答案 2 :(得分:0)

您无法更改常量,因此int const count = 0;无法修改const++;,要解决此问题,您只需删除const关键字:

 int count = 0;

答案 3 :(得分:0)

 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++;

答案 4 :(得分:-3)

==替换为!=

中的string[i] == '\0'