我试图找到给定字符串中数字的频率,其中包含数字和字母。当我运行相同的程序时,我得到不同的结果,看起来像随机输出。问题出在哪里?
int main() {
char num[1001];
int digit[10];
int j,i;
int count;
scanf("%s",num);
for(i=48;i<=57;i++)
{
count = 0;
for(j=0; num[j] != EOF;j++)
{
if(num[j] == i)
{
count++;
}
}
printf("%d ",count);
}
return 0;
}
您在
num
之前错过了与scanf
行中的&
。正确的代码应该是:
scanf("%s", &num);
扫描值时,需要提供变量的地址。也就是说,你让你的程序知道在哪里放置值。&num
指向变量num
的地址。但是,如果您只是编写scanf("%s",num)
则您正在提供num
变量的值,而您根本不在乎。无论如何,您都会覆盖该值。
在字符串的末尾,计算机放置一个 ASCII 值为 0 的空字符