C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 211|回复: 7

[求助] 初级问题,求解答~~~ [复制链接]

Rank: 1

主题
2
帖子
14
C币
55 枚
在线时间
5 小时
发表于 2012-1-26 01:01:45 |显示全部楼层
分享到:



请教各路大神,为什么此代码执行结果里面总是会多出一部分(图中红圈部分),还有char a;不是单字符么,为什么输入welcome可以一并逐个处理(黄字部分),是什么原理?
谢啦~~~
附件: 你需要登录才可以下载或查看附件。没有帐号?加入社区!
#include<stdio.h>
maih()
{
      printf("我要学C !!!");
}

Rank: 4

主题
3
帖子
97
C币
303 枚
在线时间
27 小时
发表于 2012-1-26 14:42:42 |显示全部楼层
在a=NULLh;后加一个getchar(); 用来吸收回车键。

Rank: 1

主题
2
帖子
14
C币
55 枚
在线时间
5 小时
发表于 2012-1-27 01:11:27 |显示全部楼层
333333333333333 发表于 2012-1-26 14:42
在a=NULLh;后加一个getchar(); 用来吸收回车键。




还是不太行。。。我怀疑最后一个红圈圈住的The char you entered is : 后面的可能受\0。  程序把\0当作字符处理了。


我还有一个问题就是这个char c;不就是单字符么,为什么我输入了一串 welcome,程序会逐个处理,而不是只处理首字母w? 这个字符串存在哪了?


我表示非常困惑。。。
附件: 你需要登录才可以下载或查看附件。没有帐号?加入社区!
#include<stdio.h>
maih()
{
      printf("我要学C !!!");
}

Rank: 6Rank: 6

主题
5
帖子
136
C币
476 枚
在线时间
80 小时
发表于 2012-1-27 02:21:05 |显示全部楼层
3333...说的是对的,输入完一个字符串后自然要按下回车才能被输入函数所接受,
所谓的'\0'只是在接受字符串%s 时程序(比如gets)处理出来的,本来是在输入流中是没有的。
但是他的处理方法错了,一个低级错误,getchar()放在循环里头的话每次都吸收一个字符,结果就是少打印了偶数序数的字符 比如welcome 只打出 wloe
下面的程序解决了这个错误,并且美化了下你的程序    vc和tc都验证过了  自己看看吧
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char a;
  5.         for(printf("input:");scanf("%c",&a),a!='\t';)
  6.         {
  7.                 if(a=='\n')
  8.                 {
  9.                         printf("\ninput:");
  10.                         continue;
  11.                 }
  12.                 printf("the char is:%c\n",a);
  13.                 a=NULL;
  14.         }
  15.         return 0;
  16. }
复制代码

Rank: 1

主题
2
帖子
14
C币
55 枚
在线时间
5 小时
发表于 2012-1-30 00:48:02 |显示全部楼层
lichao890427 发表于 2012-1-27 02:21
3333...说的是对的,输入完一个字符串后自然要按下回车才能被输入函数所接受,
所谓的'\0'只是在接受字符串 ...

啊啊啊,对了~谢谢大侠!
#include<stdio.h>
maih()
{
      printf("我要学C !!!");
}

Rank: 3Rank: 3

主题
6
帖子
49
C币
183 枚
在线时间
13 小时
发表于 2012-1-30 09:48:37 |显示全部楼层
lichao890427 发表于 2012-1-27 02:21
3333...说的是对的,输入完一个字符串后自然要按下回车才能被输入函数所接受,
所谓的'\0'只是在接受字符串 ...

果然是高手呀,顶礼膜拜下吧!

Rank: 2

主题
2
帖子
53
C币
95 枚
在线时间
5 小时
发表于 2012-1-30 13:16:40 |显示全部楼层
高手啊 !

Rank: 1

主题
0
帖子
9
C币
45 枚
在线时间
3 小时
发表于 2012-2-5 17:03:51 |显示全部楼层
for语句是先执行判断条件里面的东西。
在你最后一次判断的时候,先执行printf("input"),并要你输入一个字母,同时在上一个循环,条件已经满足,退出循环。
所以就会多出那个了。
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-23 15:17

©2009-2011 cyuyan.com.cn

回顶部