LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3340|回复: 5

getchar的用法

[复制链接]
发表于 2005-7-24 21:26:39 | 显示全部楼层 |阅读模式

  1. #include <stdio.h>
  2. void main () {
  3.         int i=1;
  4.         char c1, c2;
  5.         printf ("%d", i);
  6.         c1=getchar ();
  7.         c2=getchar ();
  8.         printf ("%c", c1);
  9.         printf ("%c", c2);
  10. }
复制代码

为什么程序只接收第一个getchar ()的值?
谢谢。
 楼主| 发表于 2005-7-24 21:31:50 | 显示全部楼层

  1. #include <stdio.h>
  2. void main () {
  3.         int i=1;
  4.         char c1, c2;
  5.         printf ("%d", i);
  6.         c1=getchar ();
  7.         c2=getchar ();
  8.         printf ("%c", c1);
  9.         printf ("%d", c2); //这里把原来的%c改成了%d
  10. }
复制代码

刚才把程序换了一下,结果输出a10,
看来是把enter作为一个字符接受了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-25 14:08:37 | 显示全部楼层

getchar不是只能接受一个字符吗?

我把getchar接受到的字符赋给了x->data,
输入每个字符后回车,
然后输出,
可是把字符连同回车一块输出了,
这是怎么回事?

  1. #include <stdio.h>
  2. #include <malloc.h>

  3. typedef struct linklist {
  4. char data;
  5. struct linklist *next;
  6. };

  7. void main () {
  8. char ch;
  9. struct linklist *head, *p, *r, *x;
  10. p=(struct linklist *) malloc (sizeof(struct linklist));
  11. head=p;
  12. (*head).next=NULL;
  13. r=head;
  14. ch=getchar ();
  15. while (ch!='?') {/* '?'是结束标志字符.如abc? */
  16.   p=(struct linklist *) malloc (sizeof(struct linklist));
  17.   p->data=ch;
  18.   (*r).next=p;
  19.   r=p;
  20.   ch=getchar ();
  21. }
  22. if (r!=head)
  23.   r->next=NULL;
  24. ch=getchar ();

  25. x=(*head).next;
  26. printf ("the list is:\n");
  27. while (x!=NULL) {
  28.         printf ("%d", x->data);
  29.         x=x->next;
  30. }
  31. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-7-25 16:07:21 | 显示全部楼层
回车和换行也是字符。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-25 16:46:45 | 显示全部楼层
比如我输入a回车b回车c回车
那应该只输出三个字符:971098,
因为getchar一次只能接受一个字符。
但实际上却输出了六个字符971098109910?
这是为什么?
谢谢。
回复 支持 反对

使用道具 举报

发表于 2005-7-25 18:51:51 | 显示全部楼层
Post by Xiangbuilder
比如我输入a回车b回车c回车
那应该只输出三个字符:971098,
因为getchar一次只能接受一个字符。
但实际上却输出了六个字符971098109910?
这是为什么?
谢谢。


你狠~~~~~~
谁告诉你只能循环三次咧? 明明循环了六次啊~~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表