免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1797 | 回复: 8

[C] c语言问题 [复制链接]

论坛徽章:
0
发表于 2007-09-08 16:52 |显示全部楼层
#include <stdio.h>
void main(){

               
        char pa[3];
        scanf("%c,%c,%c",pa,pa+1,pa+2);
        printf("%c,%c,%c",pa[0],pa[1],pa[2]);

        printf("please input the num you want:\n");
        int dish;
        scanf("%d",&dish);
       
}

为什么把MAIN里面前三行 即

        char pa[3];
        scanf("%c,%c,%c",pa,pa+1,pa+2);
        printf("%c,%c,%c",pa[0],pa[1],pa[2]);

放到后三行的后面,即

void main(){
        printf("please input the num you want:\n");
        int dish;
        scanf("%d",&dish);

        char pa[3];
        scanf("%c,%c,%c",pa,pa+1,pa+2);
        printf("%c,%c,%c",pa[0],pa[1],pa[2]);
}
那PRINTF出来的printf("%c,%c,%c",pa[0],pa[1],pa[2]);就是乱码?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2007-09-08 18:00 |显示全部楼层
你是怎么输入的?

论坛徽章:
0
发表于 2007-09-08 18:02 |显示全部楼层
注意输入方式以及%d格式输入后输入缓冲区中还存在一个\n

论坛徽章:
0
发表于 2007-09-08 21:03 |显示全部楼层
原帖由 lenovo 于 2007-9-8 18:00 发表
你是怎么输入的?

输入方式是 a,b,c
应该不是输入方式的问题,两次输入方式是一样的,但一个输出乱码 一个正常

论坛徽章:
0
发表于 2007-09-08 22:43 |显示全部楼层
很明显,前者是先执行a,b,c的输入,中间你人为的加上了printf然后再从容输入数字就ok了。
但是后者一开始执行printf后面的两次scan间没有间隔,在你输入数字后,再输入任何字符,你的程序都会当成是pa的输入。
假使你是这么输入:1\na,b,c,那你的程序就会当你输入了。dish=1,pa[0]=‘\n’,printf遇到\n就结束,自然你打出来的就是乱码了。像你第二种方式正确的输入方式应该是1a,b,c。

[ 本帖最后由 fordme 于 2007-9-8 22:46 编辑 ]

论坛徽章:
0
发表于 2007-09-08 22:57 |显示全部楼层
原帖由 fordme 于 2007-9-8 22:43 发表
很明显,前者是先执行a,b,c的输入,中间你人为的加上了printf然后再从容输入数字就ok了。
但是后者一开始执行printf后面的两次scan间没有间隔,在你输入数字后,再输入任何字符,你的程序都会当成是pa的输入。
假使你是这么输入:1\na,b,c,那你的程序就会当你输入了。dish=1,pa[0]=‘\n’,printf遇到\n就结束,自然你打出来的就是乱码了。像你第二种方式正确的输入方式应该是1a,b,c。

大体正确,有些地方需要商榷。

论坛徽章:
0
发表于 2007-09-08 23:13 |显示全部楼层
应该是回车被作为pa[0]了。

论坛徽章:
0
发表于 2007-09-09 00:46 |显示全部楼层
scanf("%d",&dish);后加上fflush(stdin);

论坛徽章:
0
发表于 2007-09-09 01:19 |显示全部楼层
学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP