核心提示:我是C语言菜鸟,这是一个跟整型、字符型相关的基础问题……,用户提出问题:我是C语言菜鸟,这是一个跟整型、字符型相关的基础问题……,具体如下:C数据类型?通过互联网整理获得以下解决方法:=================1楼=====================if(1==scanf(%d,&...,中国学网提供,健康,养生,留学,移民,创业,汽车等信息
用户提出问题:我是C语言菜鸟,这是一个跟整型、字符型相关的基础问题……,具体如下:C数据类型?
通过互联网整理获得以下解决方法:
=================1楼=====================
if (1 == scanf( "%d", &a ))
{
//a成功赋值。
}
=================2楼=====================
控制台输入的都是ASCII码,包括输入的数字其实也是ASCII码,然后根据scanf中的%d再转化为整型
如果你输入格式是%d,但你输入的不是一串'0'~'9'的字符,那么就会转换失败,所以a的值没有变
建议深入了解一下scanf的原理
=================3楼=====================
case 'd':
break;
case 'x':
break;
=================4楼=====================
建议楼主看下c库函数,基本的还是要知道的
=================5楼=====================
仅供参考:
#include <stdio.h>
int main()
{
int a,b,n,v,r,k;
char buf[80];
char *p;
k=0;
r=EOF;
while (1) {
if (EOF==r) {
fgets(buf,80,stdin);
p=buf;
}
while (1) {
r=sscanf(p,"%d%n",&v,&n);[pagebreak][pagebreak]
if (1==r) {k++;break;}
if (EOF==r) break;
p++;
}
if (EOF==r) continue;
p+=n;
if (1==k) a=v;
if (2==k) {
b=v;
break;
}
}
printf("%d,%dn",a,b);
return 0;
}
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
p=s;
while (1) {
k=sscanf(p,"%d%n",&v,&n);
printf("k,v,n=%d,%d,%dn",k,v,n);
if (1==k) {
p+=n;
} else if (0==k) {[pagebreak][pagebreak]
printf("skip char[%c]n",p[0]);
p++;
} else {//EOF==k
break;
}
}
printf("End.n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.
如果您还有更好的解决方法,请在最下面评论中留下您的解决方法
[pagebreak][pagebreak]
联系客服