以下代码始终为'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;
}
谢谢!
答案 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'