我遇到了這個程序的麻煩。 編譯器給我,成功程序編譯後: 未處理的異常在「0x0f6bd540(msvcr100d.dll)」「progBUS.exe」
程序出了什麼問題,因爲一切似乎都很好,但最終,按「Enter」退出控制檯後,出現錯誤 - 給出未處理的異常。如何解決它? 非常感謝!未處理的異常 - 如何解決它,C++
# 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;
}
我不明白,你開始調試並停下來使這個問題? – Rapptz
'char * ss(「u」)'這應該是'const char *' –
而且'char * word'也應該是'const char *'。好像你正嘗試在只讀內存中寫入。 – flamingo