PTA运行错误及G++与clang++区别
这是用G++运行的截图,显示运行时错误,但程序本身是没有错误的。
这是用clang++运行的截图,显示全对
这是为什么呢? 请懂的大佬解释一下, 下面是代码:
#include<bits/stdc++.h>
//#include<iostream>
//#include<string>
using namespace std;
int main(){
string str1;
string str2;
int l=1;
int k=0;
getline(cin,str1);
for(int i=0;i<str1.length();i++){
if(str1[i]>='A'&&str1[i]<='Z'){
for(int j=0;j<=k;j++){
if(str1[i]==str2[j]){
l=0;
break;
}
}
if(l){
str2[k]=str1[i];
cout<<str2[k];
k=k+1;
}
if(!l){
l=1;
}
}
}
if(k==0){
cout<<"Not Found";
}
return 0;
}
你的程序有一个大BUG,能正常运行只是你的运气问题(与环境/编译器有关的,所以clang++可以有正确结果)
问题主要在
str2[k]=str1[i];
你的str2没有申请内存(它缺少会有一定空间的,所以程序能运行)
你改为
str2+=str1[i];
就可以了
热门标签: