【发布时间】:2015-12-06 15:01:57
【问题描述】:
我是 C 的新手,我正在查看一些问题,我思考了一个问题,我们需要使用用户输入扫描值。例子 1 2 3 45 6 7. 所以我们自动将这些值扫描到二维数组中。 困扰我的一件事是如果用户输入 1 2 3 2 3 Josh,我们如何忽略 Josh 而只将值扫描到数组中。 我查看了使用 getchar 并使用标志变量,但我无法弄清楚区分整数和字符的难题。 /* 这是我尝试过的*/
#include <stdio.h>
int main(int argc, char *argv[]) {
int a;
int b;
int A[10];
while (((a = getchar()) != '\n') && (b = 0)) {
if (!(a >= "A" && a <= "Z")) {
scanf("%d", A[b]);
}
b++;
}
}
}
【问题讨论】:
-
while (((a = getchar()) != '\n') && (b = 0)) 这个循环永远不会执行,是吗?
-
要检查一个char是否为数字,可以简单地使用C标准函数isdigit(a)
-
@dave_1234 赋值
(b = 0)返回0。0AND 任何东西都被评估为0。所以循环不会执行。 -
@dave 因为赋值 (b=0) 应该得到 0,这是 && 运算符的第二个参数
-
@A.S.H 哦,好的,谢谢,顺便说一句,您能否使用 isdigit 函数编写一些代码来帮助我扫描,因为我不断遇到 seg 错误。
标签: c arrays char integer scanf