我正在使用strrev()函数来反转char数组并获得输出。 但它显示出奇怪的结果。如果我进入"女士"它的反转结果是这样的。
请向我解释一下错误。
#include<iostream>
#include<string.h>
using namespace std;
main(){
int x,i;
cout<<"Enter the size of array:";
cin>>x;
cout<<"Enter "<< x <<" elements in array:";
char ch1[x] ;
for(i=0; i<x; i++){
cin>>ch1[i];
}
char ch2[x] = {0};
for(i=0; i<x; i++){
ch2[i] = ch1[i];
}
cout<<"Copied array is:";
for(i=0; i<x; i++){
cout<<ch2[i];
}
cout<<endl;
strrev(ch2);
cout<<ch2;
if(ch1[x] == ch2[x]){
cout<<"\nPalindrom";
}else{
cout<<"\nNot palindrom";
}
}
答案 0 :(得分:1)
你需要null终止你的c风格字符串,如:
char ch1[x + 1]; // need space for null
for(i=0; i<x; i++){
cin>>ch1[i];
}
ch1[x] = '\0'; // null terminate
char ch2[x + 1] = {0}; // need space for null here too
for(i=0; i<x; i++){
ch2[i] = ch1[i];
}
ch2[x] = '\0'; // null terminate
答案 1 :(得分:0)
函数strrev需要一个字符串,但你有一个char矢量。您必须在向量的末尾插入 null-terminator'\ 0'才能使用该函数!