vol*_*olk 3 c++ string reverse char cstring
好吧,所以我试图在C++中反转一个C风格的字符串,我正在寻找一些奇怪的输出.也许有人能说出一些亮点?
这是我的代码:
int main(){
char str[] = "string";
int strSize = sizeof(str)/sizeof(char);
char str2[strSize];
int n = strSize-1;
int i =0;
while (&str+n >= &str){
str2[i] = *(str+n);
n--;
i++;
}
int str2size = sizeof(str)/sizeof(char);
int x;
for(x=0;x<str2size;x++){
cout << str2[x];
}
}
Run Code Online (Sandbox Code Playgroud)
这里的基本思想是将指针指向字符串的结尾,然后使用指针算法将其向后读入新数组.
在这种特殊情况下,我得到一个输出:"gnirts"在任何输出的开头有一个烦人的空间,我假设是空字符?但是当我试图通过递减strSize变量来排除它时,我最终在字符串另一端的一些其他字符可能来自另一个内存块.
有关如何避免这种情况的任何想法?PS :(你们会认为这是扭转字符串的好主意吗?)
小智 7
有效字符串应以空字符结尾.因此,您需要将空字符保留在其原始位置(在字符串的末尾),并仅反转非空字符.所以你会有这样的事情:
str2[strSize - 1] = str[strSize - 1]; // Copy the null at the end of the string
int n = strSize - 2; // Start from the penultimate character
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |