69,382
社区成员
发帖
与我相关
我的任务
分享
#include<stdio>
int main(void)
{
int number;
while((scanf("%d",&number))!=1)
{
puts("enter wrong ,try again:");
while(getchar()!='\n')
continue;
}
printf("the number you enter is:%d",number);
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,%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.
#include<stdio.h>
int main(void)
{
int i;
int b = 1;
while(b)
{
int c;
c=scanf("%d",&i); // 当你输入一个字符,如:'a'时,此时'a'并不是一个符合scanf格式化的一个输入,因为格式化要求输入一个整数,所以输入成功的个数就0,也就是c=0
// 此时程序进入下一个循环,由于上次的'a'并不符合格式化输入,所以'a'被缓冲,放到下一个scanf输入中,此时'a'又不符合规定,就进入下一个循环,这样就形成了死循环
printf("%d\n",c);
if(c==1)
b=0;
else
printf("your input wrong,you can input only a charactr,try again\n");
}
printf("the num is:%d",i);
return 0;
}
int i = 0;
int b = 1;
int c = 0;
char cTmp = '\0';
while( b )
{
c = scanf( "%d", &i );
printf( "%d\n", c );
if( 1 == c )
b = 0;
else
{
cTmp = fgetc( stdin ); // 跳过缓冲区中的非法字符
printf( "skip the character \'%c\'\n", cTmp );
}
}
printf( "the number is: %d\n", i );
就这样的,无论你怎么乱输入,它总是会找到第一正确的int。