循环中的小问题!~~~~

kialo 2004-10-06 09:42:47
我的代码如下:

#include <stdio.h>
#include <malloc.h>
#define DATATYPE2 char

typedef struct node{
DATATYPE2 data;
struct node *next;
}LINKLIST;

void main()
{
LINKLIST *t,*p,head;
char ch;
int i=0;
head.next=NULL;
while((ch=getchar())!='$'){
t=(LINKLIST*)malloc(sizeof(LINKLIST));
t->data=ch;
t->next=head.next;
head.next=t;
}
p=head.next;
while(p){
i++;
printf("%c",p->data);
p=p->next;
printf("\ni=%d\n",i);
}
}


编译通过了,可运行时,却打印两次i的语句,不知为何,请各位指教。^_^
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kobefly 2004-10-07
  • 打赏
  • 举报
回复
哇,居然结贴了
太不够意思了吧
kobefly 2004-10-07
  • 打赏
  • 举报
回复
TO:
山河水
你的问题是这样的
首先你问题的出现并不是说被当作字符串来处理了
而是因为getchar()函数的机制
对于你没输入的一个回车
它当作一个字符
所以却打印两次i的语句的情况就出现了
你可以结贴了
呵呵
kialo 2004-10-07
  • 打赏
  • 举报
回复
为什么输入a 回车 b回车.....$
的话就会出现错误的结果啊?
怎么会当成字符串处理呢?
不明白啊!~~~~~~~~
prink 2004-10-06
  • 打赏
  • 举报
回复
很基础的问题,仔细研究一下就能搞定,我想要分分~~
zhanzhiyuan 2004-10-06
  • 打赏
  • 举报
回复
你不要回车就行了...
如果你按了回车键的话.那就变成了字符串..而不是字符了....
chery2010 2004-10-06
  • 打赏
  • 举报
回复
这是我的输出结果
abc$
c
i=1
b
i=2
a
i=3
请按任意键继续. . .
没错误呀!
bryan99 2004-10-06
  • 打赏
  • 举报
回复
验证过了,的确如楼上所说的。
prink 2004-10-06
  • 打赏
  • 举报
回复
没问题啊~~,你输入的时候输入abc$,别输入a 回车 b回车.....$

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧