反转字符串,但它崩溃了

时间:2014-07-12 13:29:24

标签: c

#include <stdio.h>
void reverse_string(char *string){
char *p = string;
while(*p !='\0'){
    p++;
}
p--;

while( string < p ){
    char temp;
    temp = *string;
    *string = *p;
    *p = temp;
    }
}
int main(){
    char *string = "abcdefg";
    reverse_string(string);
    printf("%s\n",*string);
}

我想要反转字符串。但是它不起作用并且代码崩溃了。 *字符串无法更改?或者出了什么问题?

1 个答案:

答案 0 :(得分:2)

更改

char *string = "abcdefg";

char string[] = "abcdefg";

并查看Question 1.3 2 of C-FAQ


"%s"格式适用于字符串,但在此处:

printf("%s\n",*string);

您正在传递int,更改为:

printf("%s\n", string);

这是一个无限循环:

while( string < p ){
    char temp;
    temp = *string;
    *string = *p;
    *p = temp;
}

您需要在某处减少p