我的问题与scanf();
例如:input - > 542-4Output
- > 5,4,2,-4
我的意思是,打印到带负数的负数。它是直到负数,但我也想打印负数。我能怎么做 ?请帮我。我使用了getchar()
,isdigit()
,int a=x-'0'
char x =getchar();
while(isdigit(x)){
int a=x-'0';
printf("%d,",a);
x=getchar();
}
答案 0 :(得分:2)
isdigit(x)
, '-'
不适用,因此您需要单独测试。
由于您想在第一个负数后停止,因此您需要在阅读-
时设置一个标记,这样您就不会继续读取其他负数。
int neg = 0;
char x = getchar();
while (isdigit(x) || x == '-') {
if (x == '-') {
neg = 1;
} else {
int a = x - '0';
if (neg) {
a = -a;
}
printf("%d", a);
if (neg) {
break;
}
x = getchar();
}
答案 1 :(得分:0)
getchar()
一次读取一个字符。你会得到'5','4','2'和' - '。
isdigit(x)
不适用于' - ',因此循环终止于那里。
答案 2 :(得分:0)
这个怎么样:
#include <stdio.h>
int main(int argc, char *argv[])
{
char x = getchar();
int a;
while (x != '\n')
{
if (isdigit(x))
{
a = x - '0';
printf("%d,", a);
}
else
printf("%c", x);
x = getchar();
}
printf("\n");
return 0;
}