我正在使用this SO question作为需要反转字符串的程序的一部分。我遇到的问题是,我似乎无法获得该功能的工作。这里是我的代码有:'reverse_string'函数的冲突类型
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作为chux和我在他的回答中提到,你不能修改字符串文字。 –