【发布时间】:2013-01-16 06:04:09
【问题描述】:
我已经编写了一个函数来反转 c 样式字符串,如下所示
void reverse1(char* str) {
char* str_end = strchr(str, 0);
reverse(str, str_end);
}
并使用此函数打印反转的字符串
void print(char* str) {
for (int i=0; i!=sizeof(str); ++i) {
cout << int(*(str+i)) << '\t';
}
cout << endl;
}
反转后,打印结果为: 103 110 105 114 116 115 0 0 会有一个额外的 0。 我不知道这是为什么。希望可以有人帮帮我。 非常感谢!
【问题讨论】:
-
sizeof(str)是指针的大小。我建议只使用std::reverse。 -
我很惊讶它工作得这么好,
sizeof(str)应该只是指针的大小,而不是你想象的字符串的长度。 -
不确定,但可能是
\0而不是0? -
sizeof(str)应该是strlen(str),并且循环应该以这种方式工作:for(int i = 0; i < strlen(str); i++){ }据我所知,您的程序根本不应该工作。 -
@randomp 使用
strlen( str )获取字符串长度