核心提示:我是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] |
|