程序完成后卡住了 为什么这个基本C++程序在完成后会被卡住,它不会返回到 Turbc++ >强>中的代码。但是,它适用于包含1个和3个字符的单词。它还可以在代码块中完美运行 #include<conio.h> #include<stdio.h> #include<iostream.h> #include<string.h> void main() { clrscr(); char * name; cout<<"Enter your name : "; gets(name); int len = strlen(name); for(int i=0;i<len;i++) { cout<<name[i]<<" "<<i<<endl; } getch(); } #包括 #包括 #包括 #包括 void main() { clrsc(); 字符*名称; cout

程序完成后卡住了 为什么这个基本C++程序在完成后会被卡住,它不会返回到 Turbc++ >强>中的代码。但是,它适用于包含1个和3个字符的单词。它还可以在代码块中完美运行 #include<conio.h> #include<stdio.h> #include<iostream.h> #include<string.h> void main() { clrscr(); char * name; cout<<"Enter your name : "; gets(name); int len = strlen(name); for(int i=0;i<len;i++) { cout<<name[i]<<" "<<i<<endl; } getch(); } #包括 #包括 #包括 #包括 void main() { clrsc(); 字符*名称; cout,c++,string,turbo-c++,C++,String,Turbo C++,您没有为name分配任何内存 使用不指向您拥有的任何内存的指针的行为是未定义的 这就是为什么字符名[20]可以工作。虽然获取是不安全的,因为您无法控制读取的字符数,因此您的字符缓冲区可能会溢出。为什么不使用std::string、cin,以及更先进的编译器?为什么您要使用TurboC++?这玩意儿至少有30年历史了!难怪它不能正常工作,它是在C++被标准化之前开发的!请用GCC或其他东西,而不是Turbo ++使用代码块。变量名称是指针,但是它指向哪里?当你能回答这个问题时,你知道什么是错误的

您没有为
name
分配任何内存

使用不指向您拥有的任何内存的指针的行为是未定义的


这就是为什么
字符名[20]
可以工作。虽然
获取
是不安全的,因为您无法控制读取的字符数,因此您的字符缓冲区可能会溢出。为什么不使用
std::string
cin
,以及更先进的编译器?

为什么您要使用TurboC++?这玩意儿至少有30年历史了!难怪它不能正常工作,它是在C++被标准化之前开发的!请用GCC或其他东西,而不是Turbo ++使用代码块。变量<代码>名称<代码>是指针,但是它指向哪里?当你能回答这个问题时,你知道什么是错误的。也不要使用<代码>获取< /代码>。永远不要使用<代码>获取< /代码>。它是一个坏的函数,而且危险。它也被重新定义了。从C和C++两个标准中移动。我不理解下票。这个问题很清楚,有一个简短的可编译的例子。我也不理解下票。如果问题是微不足道的,这并不意味着它应该被否决。@ VaibhavVats请尊重其他用户。也谢谢你的评论。更好的LEA。我只是你的评论的建设性部分,实际上两者都有;)如果我受到威胁,最好尊重:)但是我在你的评论之前就注意到了打字错误。我对堆栈溢出还不熟悉,所以我现在正在学习这里的规则。对于任何错误,我深表歉意。