这个问题已经在这里有了答案:如何在C或C ++中反转字符串? (30个答案)5年前关闭。我知道这个问题已经被问过很多次了,但是我完全陷入了困境。
编辑:此问题与以前的问题不同,因为问题不在于反向函数的代码,而是可以将哪些类型的值传递给反向函数(即数组与指针)..有关更多信息,请参见下面的答案。
我只是想反转AC样式字符串。我已经从“破解编码面试”中直接复制并粘贴了代码。(见下文)
void reverse(char *str) { char * end = str; char tmp; if (str) { while (*end) { ++end; } --end; while (str < end) { tmp = *str; *str++ = *end; *end-- = tmp; } } }
这对我不起作用。我对C非常陌生,所以也许我在编译代码时出错。我的主要功能如下:
int main(int argc, char *argv[]) { char *string = "foobar"; reverse(string); printf("%s\n", string); return 0; }
我在Windows 8.1上使用Cygwin,并且在命令行上运行:
gcc ex1.c -Wall -o exe1 ./exe1
每次我从窗口弹出时都说“ exe1.exe已停止工作”。我尝试将打印语句放入while循环中,以尝试调试并查看发生的情况。在窗口弹出之前,它到达while循环。
编辑:阅读评论后,我还尝试将main中的代码更改为:
char string[] = "foobar"; reverse(string);
当我这样做时,我的程序就挂了。
我究竟做错了什么?
谢谢!