当我试图在c++中反转cstring时,我得到了一堆额外的字符
I am getting a bunch of extra chars when i try to reverse a cstring in c++
用户输入的字符串似乎是反向的,但后面也跟着一堆垃圾字符。这是我的反向函数:
void reverse(char str[])
{
char reversed[MAX_CHAR];
for(int i = 0; i < strlen(str); i++)
{
reversed[i] = str[strlen(str) - i - 1];
}
cout << reversed << endl;
}
您需要以NULL
字符' '
, ASCII值0
结束您的字符串。
试试这个:
void reverse(char str[]) {
char reversed[MAX_CHAR];
int len = strlen(str);
for(int i = 0; i < len; i++) {
reversed[i] = str[len - i - 1];
}
reversed[len] = ' '; // Add this
cout << reversed << endl;
}
这就是C
和C++
知道字符串结束的地方。
阅读更多关于以空字符结尾的字符序列:
- http://www.cplusplus.com/doc/tutorial/ntcs/
- http://en.wikipedia.org/wiki/Null-terminated_string
您可以通过以下两种方式解决此问题A)用空字符初始化反向数组
char reversed[MAX_CHAR] = {0};
b)在反向字符串的末尾添加空字符。
reversed[strlen(str)] = ' ';
相关文章:
- 如何使用结构和指针推动和弹出一堆双打
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 当我在结构中包含多个数组时,我的程序会跳过一堆代码
- 在共享指针的值中调用 std::swap 调用一堆构造函数和析构函数
- 使用带有.lib和一堆.dll和.h文件的Python CFFI
- 用 c++ 编写一堆类似的 if 语句的漂亮方法
- 当我尝试编译程序时,我遇到了一堆错误,例如:'std::max':找不到匹配的重载函数
- Swig C++ to python:编译一堆.cpp和.h文件
- template元编程:将一堆模板参数相乘
- 在.NET中存储一堆恒定值的最佳方法
- 我的一堆函数出现"undefined reference"错误,我不知道为什么
- 制作一堆 int 数组
- 为什么glut.h会在CodeBlocks中弹出一堆未定义的引用
- 更换一堆std ::矢量条目
- 在Windows下编译程序会给出一堆"error: template with C linkage"报告
- C++将字符从静态数组复制到动态数组会添加一堆随机元素
- 如何创建一堆多维数组
- 我总是在c字串的末尾得到一堆额外的字符
- 当我试图在c++中反转cstring时,我得到了一堆额外的字符
- write(2)在我写完文件后写了一堆垃圾字符