gpt4 book ai didi

c++ - 未处理的异常 - 如何解决它,C++

转载 作者:行者123 更新时间:2023-11-30 02:57:17 27 4
gpt4 key购买 nike

我在使用这个程序时遇到了问题。在程序编译成功后,编译器给我:“0x0f6bd540 (msvcr100d.dll)”和“progBUS.exe”中未处理的异常
该程序出了什么问题,因为一切似乎都运行良好,但最后,在按“Enter”退出控制台后,出现错误 - 出现未处理的异常。如何解决?多谢!

# include <iostream>
# include <cstring>

using namespace std;

template < class T>
void switcher(T &a, T &b){
T c=a;
a=b;
b=c;
}

char* f(char* word){
static char* ss("u");
static int iter(0);

cout<<"word \""<<word<<"\" has been thrown\n";
if ( strcmp(word,ss)!=0 && strcmp(word,"")!=0) {ss=word; iter=0;} //if another word has been thrown
cout<<"ss="<<ss<<" iter="<<iter<<endl;
static char ret[15];//return word value
memset(ret, '\0', 14);//clean up ret value

int len = strlen(ss);
int j=0;
if (iter == len-1) return nullptr;//we have reached the end of word

for (int i=iter;i<len;i++){
//cout<<"*(ss+i)="<<*(ss+i)<<endl;
if (*(ss+i)!=' ') ret[j]=*(ss+i);
else { iter=i+1; return ret;}
//cout<<*(ss+i);
j++;
if(i==len-1) {iter=i+1; return ret;}
}
return nullptr;
}

int main(){
int a=1,b=2;

cout<<f("fr rewfer ewr")<<endl;
cout<<f("fr rewfer ewr")<<endl;
cout<<f("43 34")<<endl;
cout<<f("")<<endl;
cout<<f("")<<endl;
cout<<f("fr rewfer ewr")<<endl;
//char ss[]("fr rewfer ewr");
//size_t len = (sizeof ss)/(sizeof ss[0]);
// cout<<"len="<<len<<endl;

system("PAUSE");
return 0;
}

最佳答案

你需要一些纪律。你想使用:

f("fr rewfer ewr");

文字字符串可以在只读内存中。你需要保证你不会改变它:

char*f(const char* word) ;

而且你有 s("U");ss=word; 所以你也需要:static const char* ss;但是作为 ss static 你需要确保 ss 的内容在调用之间保持有效。复制word?现在,你有 ret[15] 并且让 0 变成 14。为什么不是 15?而且您无法控制您可能可以在其中写入超过 14 个字符。 F 可以返回 nullptr,但在您的 main 中您不测试 nullptr。如果您使用 std::string 和其他 C++ 标准库工具,您的一些问题可能会消失。

关于c++ - 未处理的异常 - 如何解决它,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com