c 输入格式大全(5)

时间:2025-07-07

c 输入格式大全

love you!

输出:I

love

you!

好了,原因知道了,那么scanf()函数能不能完成这个任务?回答是:能!别忘了scanf()函数还有一个 %[] 格式控制符(如果对%[]不了解的请查看本文的上篇),请看下面的程序:

#include "stdio.h"

int main()

{

char string[50];



/*scanf("%s",string);不能接收空格符*/

scanf("%[^\n]",string);

printf("%s\n",string);

return 0;

}

问题三:键盘缓冲区残余信息问题

#include <stdio.h>

int main()

{

int a;

char c;

do

{

scanf("%d",&a);

scanf("%c",&c);

printf("a=%d c=%c\n",a,c);

/*printf("c=%d\n",c);*/

}while(c!='N');

}

scanf("%c",&c);这句不能正常接收字符,什么原因呢?我们用printf("c=%d\n",c);将C用int表示出来,启用printf("c=%d\n",c);这一句,看看scanf()函数赋给C到底是什么,结果是 c=10 ,ASCII值为10是什么?换行即\n.对了,我们每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(\r),一个“换行"(\n),在这里\r被scanf()函数处理掉了(姑且这么认为吧^_^),而\n被scanf()函数“错误”地赋给了c.

解决办法:可以在两个scanf()函数之后加个fflush(stdin);,还有加getch(); getchar();也可以,但是要视具体scanf()语句加那个,这里就不分析了,读者自己去摸索吧。但是加fflush(stdin);不管什么情况都可行。

函数名: fflush

功 能: 清除一个流

用 法: int fflush(FILE *stream);

#include <stdio.h>

int main()

{

int a;

char c;

do

{

scanf("%d",&a);

fflush(stdin);

scanf("%c",&c);

fflush(stdin);

printf("a=%d c=%c\n",a,c);

}while(c!='N');

}

这里再给一个用“空格符”来处理缓冲区残余信息的示例:

运行出错的程序:

#include <stdio.h>

int main()

{

int i;

char j;

for(i = 0;i < 10;i++)

{

scanf("%c",&j);/*这里%前没有空格*/

}

}

使用了空格控制符后:

#include <stdio.h>

int main()

{

int i;

char j;

for(i = 0;i < 10;i++)

{

scanf(" %c",&j);/*注意这里%前有个空格*/

}

}

可以运行看看两个程序有什么不同。

问题四 如何处理scanf()函数误输入造成程序死锁或出错?

#include <stdio.h>

int main()

{

int a,b,c; /*计算a+b*/

scanf("%d,%d",&a,&b);

c=a+b;

printf("
;%d+%d=%d",a,b,c);

}

如上程序,如果正确输入a,b的值,那么没什么问题,但是,你不能保证使用者每一次都能正确输入,一旦输入了错误的类型,你的程序不是死锁,就是得到一个错误的结果,呵呵,这可能所有人都遇到过的问题吧?

解决方法:scanf()

c 输入格式大全(5).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219