【发布时间】:2014-01-10 03:29:15
【问题描述】:
我在需要反转字符串的程序中使用this SO question。我遇到的问题是我似乎无法使该功能正常工作。这是我的代码:
int main(int argc, char *argv[]){
char *test = "Testing";
fputs(test, stdout);
fputs(reverse_string(test), stdout);
}
char* reverse_string(char *str){
char temp;
size_t len = strlen(str) - 1;
size_t i;
size_t k = len;
for(i = 0; i < (len +1)/2; i++){
temp = str[k];
str[k] = str[i];
str[i] = temp;
k--;
}
return str;
}
我收到一个错误,提示有 conflicting types for 'reverse_string'
编辑:对于任何想知道这里是有效的代码的人。请参阅@chux 的答案以获得解释。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char* reverse_string(char *str){
char temp;
size_t len = strlen(str) - 1;
size_t i;
size_t k = len;
for(i = 0; i < (len +1)/2; i++){
temp = str[k];
str[k] = str[i];
str[i] = temp;
k--;
}
return str;
}
int main(int argc, char *argv[]){
char test[] = "Testing";
fputs(test, stdout);
fputs(reverse_string(test), stdout);
}
【问题讨论】:
-
您可能需要将 reverse_string 放在 main 之上或声明它。编译器可能假设了一些关于函数的事情。
-
如果我在 main 上面声明的 reverse_string 运行相同的程序,我仍然会遇到分段错误。
-
@DannyDyla as chux 我在他的回答中提到,您不能修改字符串文字。