我有一个显示char*
字符串的声明。但是当我尝试cout
char*
字符串时,我在屏幕上看不到任何内容。以下是我的代码:
char* reverseString(char *inputString)
{
int i=0, length=0;
char *reversedString = (char*)malloc(100);
strcpy(reversedString,inputString);
while(inputString[i]!='\0')
{
i+=1;
length+=1;
}
for(int i=0;i<length;i++)
{
reversedString[i]= inputString[length-i];
}
cout<<endl<<"In Function, Reversed String: "<<*reversedString<<endl;
return reversedString;
}
int main()
{
char string[100],*reversedString;
cout<<"Enter string: ";
scanf("%s",string);
cout<<"\nString is: "<<string;
reversedString = reverseString(string);
cout<<endl<<"In Main, Reversed String: "<<*reversedString<<endl;
return 0;
}
答案 0 :(得分:5)
这是因为你反转整个字符串,包括终止'\0'
字符。所以在反向字符串中,第一个字符是字符串终止符(最后一个是原始字符串的第一个字符,所以如果你跳过“反转”终止符,那么字符串就会被终止)。
答案 1 :(得分:1)
使用for
在reverse
函数中开始i = 1
循环。然后再添加一条语句reversedString[i] = '\0'
,以便在\0
附加字符串。