【发布时间】:2021-08-10 08:35:38
【问题描述】:
我想将字符串中的整数与整数 (0-9) 进行比较,我写了这个 -
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char num[100];
int count = 0;
scanf("%s", num);
int len = strlen(num);
for (int i = 0; i <= 9; i++)
{
for (int j = 0; j <= len; j++)
{
if (i == (num[j] - '0'))
{
count++;
}
}
printf("%d ", count);
count = 0;
}
return 0;
}
这没有问题(在大多数情况下有效,但在少数情况下失败)。那么你能给我一个替代的和最好的主意吗? 提前致谢
【问题讨论】:
-
⟼请记住,尤其是在 Stack Overflow 上学习和提问时,尽可能让代码保持井井有条是很重要的。 Consistent indentation 有助于传达结构,更重要的是传达意图,这有助于我们快速找到问题的根源,而无需花费大量时间来尝试解码正在发生的事情。
-
哪些特殊情况失败了?
-
请注意,更有效且通常更好的方法是
isdigit()from<ctype.h>。 -
@RaviKumar 一个潜在的候选者是包含空格的输入。
scanf只会读到第一个空格。 -
所以,看完作业,很明显你的数组太短了。据说输入最多 1000 个字符。
scanf与此无关,因为输入格式保证为字母数字。