社区
C++ 语言
帖子详情
为什么这个程序出现死循环?
beyondada
2004-11-15 01:26:48
#include<iostream.h>
#include<stdio.h>
void main()
{
char* ch;
int i=0;
ch=new char[100];
gets(ch);
while(ch!='\0'){
cout<<ch[i];
i++;
}
cout<<ch;
}
如果输入qq ee等就会出现死循环,为什么??请问怎么改??
谢谢!!
...全文
289
26
打赏
收藏
为什么这个程序出现死循环?
#include #include void main() { char* ch; int i=0; ch=new char[100]; gets(ch); while(ch!='\0'){ cout<<ch[i]; i++; } cout<<ch; } 如果输入qq ee等就会出现死循环,为什么??请问怎么改?? 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
greenteanet
2004-11-16
打赏
举报
回复
呵呵,楼上的还真仔细啊....
tiaoci
2004-11-16
打赏
举报
回复
好搞笑啊,竟然有这么多人又自己写了编程序,
这么简单的问题,ch没有初始化么
hiller888
2004-11-16
打赏
举报
回复
void main()
{
char* ch;
int i=0;
ch=new char[100];
memset(ch,'\0',100);
gets(ch);
while((ch[i]!='\0'&&i<100)
{
cout<<ch[i];
i++;
}
cout<<ch;
}
woshi_zjf
2004-11-16
打赏
举报
回复
判断语句有问题 ch指向的是数组的首地址 所以ch的数据是一直不变的自然是死循环
zjraycj
2004-11-16
打赏
举报
回复
#include<iostream>
using namespace std;
void main()
{
char* ch;
int i=0;
ch=new char[100];
memset(ch,'\0',100);
gets(ch);
while((*(ch+i))!='\0'&&i<100)//完整一点吧
{
cout<<ch[i];
i++;
}
cout<<ch;
}
Mr.鄧〞
2004-11-16
打赏
举报
回复
void main()
{
char* ch;
int i=0;
ch=new char[100];
memset(ch,'\0',100);
gets(ch);
while((*(ch+i))!='\0')
{
cout<<ch[i];
i++;
}
cout<<ch;
}
我也确认过了。OK
questionboy
2004-11-15
打赏
举报
回复
所有的答案中好像還缺少一個數組越界的檢驗,加上這個
while((*(ch+i))!='\0' && i<100 )
{}
CgPanda_
2004-11-15
打赏
举报
回复
小程序长了大见识
顶]
houdy
2004-11-15
打赏
举报
回复
gets()其实是line-buffer的,所以当遇到回车的时候,buffer中的数据都flush了,同时在字符串结尾处添加一个'\0'表示结束,整个过程都是标准I/O帮我们完成的。
如果真想表示输入完毕,在Unix下可以用Ctrl+D,在Windows下用Ctrl+Z表示文件结束。
判断是否结束时,需要包含#include <stdlib.h>,判断是否为EOF,如果遇到EOF,表示到了文件结束。
krosjean
2004-11-15
打赏
举报
回复
你这个while用得毫无必要 ,gets(fgets)本身遇到回车就会返回
char *ch = new char[100];
fgets(ch, 100, stdin);
std::cout << ch;
wyyhzcflying
2004-11-15
打赏
举报
回复
路过!
rferen2003
2004-11-15
打赏
举报
回复
char* ch;
int i=0;
ch=new char[100];
gets(ch);
while(*(ch+i)!='\0'){
cout<<ch[i];
i++;
}
cout<<ch;
这样通过了,我测试过啦
不过为啥要重复输出ch
zhangfjj
2004-11-15
打赏
举报
回复
楼上的,知道了,请见上面的说明,对不起,我没有看清楚!
Willin
2004-11-15
打赏
举报
回复
TO zhangfjj(小张(生命不息,灌水不止。)),虽然他显示在屏幕上的东西变了,但是他的循环控制条件没有变
zhangfjj
2004-11-15
打赏
举报
回复
gets(ch);是可以的,没有必要用memset,还要包含其他头文件,麻烦,楼主的问题出在
while(...)这里
hbsandy
2004-11-15
打赏
举报
回复
void main()
{
char* ch;
int i=0;
ch=new char[100];
memset(ch,'\0',100);
gets(ch);
while((*(ch+i))!='\0')
{
cout<<ch[i];
i++;
}
cout<<ch;
}
zhangfjj
2004-11-15
打赏
举报
回复
看来要补课的是我,为了图快,没有看清楚题,:(
我还以为是输入呢。
在这里应该是
while(ch[i]!='\0')
beyondada
2004-11-15
打赏
举报
回复
谢谢~~
刚才看错了
wshcdr
2004-11-15
打赏
举报
回复
memset(ch, 100, 0);
//////////////////////
不好意思,这里用错了
:)
wshcdr
2004-11-15
打赏
举报
回复
问题在这里
while(ch!='\0')
你的ch永远指向第一个字符,当然会死循环啦!
加载更多回复(6)
微信小
程序
中常用IF条件和for循环语句的使用
让微信小
程序
爱好者能掌握小
程序
中if条件语句和for循环语句的使用
为何单片机的
程序
必须是
死循环
?!!
为何单片机的
程序
必须是
死循环
?!!这个问题困扰了我好久,然而答案却是这个样子的!单片机没有操作系统,不像电脑有Windows,
程序
运行与结束有操作系统管理。单片机的
程序
是不能结束的,否则会使单片机系统
出现
不...
怎么避免Python
程序
出现
死循环
(无限循环)?
但如果像下面这样不小心遗漏了代码行x += 1,那么这个循环将没完没了地运行: #这个循环将没完没了地运行 x = 1 while x <= 5: print(x) 在这里,x 的初始值为 1,但根本不会变,因此条件测试x <= 5始终为 ...
危险的
死循环
:条件恒为真
死循环
指的是,在
程序
中定义的循环控制条件一直为真,导致
程序
在循环过程中无法跳出,不断执行同一段代码,直到
程序
被手动终止或者发生系统错误。通常来说,如果没有特殊的
程序
设计来跳出循环,那么
程序
就会一直执行...
python
死循环
_python中
死循环
循环循环是指重复执行一段代码若干次,为什么要有循环? 因为循环可以避免大量的代码重复。
死循环
当一个循环可以执行无限次,也就是没有终止条件,我们称这个循环是
死循环
。 编写
死循环
程序
实际上是不对的,一旦写...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章