大家谁帮本人看看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.