大家谁帮本人看看C primes plus 里面这个话是什么意思?最好能够给本人举个例子,感激不尽感激不尽(PS: 假如第一个非空白字符是A而不是数字 这一段),不是很能够理解。
解决方案
30
30
1.通过scanf函数的返回值来验证输入的合法性。
2.scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
3.scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
如:
scanf(“%d %d”,&a,&b);
假如a和b都被成功读入,那么scanf的返回值就是2
假如只有a被成功读入,返回值为1
假如a和b都未被成功读入,返回值为0
假如遇到错误或遇到end of file,返回值为EOF。
且返回值为int型.
2.scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
3.scanf()函数返回成功赋值的数据项数,读到文件末尾出错时则返回EOF。
如:
scanf(“%d %d”,&a,&b);
假如a和b都被成功读入,那么scanf的返回值就是2
假如只有a被成功读入,返回值为1
假如a和b都未被成功读入,返回值为0
假如遇到错误或遇到end of file,返回值为EOF。
且返回值为int型.
10
仅供参考:
#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,%d\n",k,v,n); if (1==k) { p+=n; } else if (0==k) { 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.