我正在尝试将给定字符串的每个字符与数字1到9进行比较,并在成功比较后增加count变量。最后,为每个数字打印计数变量的值。但是这些方法没有奏效。不知道为什么。
int main() {
char *s;
s = malloc(1024 * sizeof(char));
scanf("%[^\n]", s);
int i,j,count=0;
for(i=0;i<=9;i++)
{
for(j=0;j<strlen(s);j++)
{
if(s[j]==i)
{
count++;
}
}
printf("%d ",count);
}
return 0;
}
if(s[j]==i) <<<<<<<<<
{
count++;
}
您正在将字符的序数值与0到9范围内的整数进行比较。这不是您想要的。您可以使用以下方法将数字转换为int:
char c = '5'; int x = c - '0';
因此您的情况将是:
if(s[j] -'0' ==i)
{
count++;
}
在C中,字符值是一个数字,但不是您在此处期望的数字。当我们拥有字符“ 2”并且检查它等于一个数字时,我们实际上是在询问什么是ASCII码“ 2”,在这种情况下为50。您需要调整代码,以便将其转换为ASCII码转换成数字表示形式,所以50变为2。这很简单,只需更改您的代码即可,看起来像这样]
if((s[j] - '0') == i){