Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分段错误反转字符串文字 你的代码试图修改一个字符串文字,如果你改变了,则在C或C++中是不允许的:< /P> char s[6] = {'h','e','l','l','o','\0'}; char *s = "hello";_C - Fatal编程技术网

分段错误反转字符串文字 你的代码试图修改一个字符串文字,如果你改变了,则在C或C++中是不允许的:< /P> char s[6] = {'h','e','l','l','o','\0'}; char *s = "hello";

分段错误反转字符串文字 你的代码试图修改一个字符串文字,如果你改变了,则在C或C++中是不允许的:< /P> char s[6] = {'h','e','l','l','o','\0'}; char *s = "hello";,c,C,致: 然后修改数组的内容,将文本复制到该数组中(相当于使用单个字符初始化数组),这是正常的。如果执行chars[6]={h'、'e'、'l'、'l'、'o'、'\0'}将6个字符放入堆栈上的数组中。当您执行char*s=“hello”堆栈上只有一个指针,它指向的内存可能是只读的。写入该内存会导致未定义的行为。对于某些版本的gcc,您可以使用-fwritable字符串修改静态字符串。并不是说真的有什么好的借口可以这么做。你可以试试这个: char s[] = "hello"; void str

致:


然后修改数组的内容,将文本复制到该数组中(相当于使用单个字符初始化数组),这是正常的。

如果执行
chars[6]={h'、'e'、'l'、'l'、'o'、'\0'}
将6个字符放入堆栈上的数组中。当您执行
char*s=“hello”堆栈上只有一个指针,它指向的内存可能是只读的。写入该内存会导致未定义的行为。

对于某些版本的gcc,您可以使用-fwritable字符串修改静态字符串。并不是说真的有什么好的借口可以这么做。

你可以试试这个:

char s[] = "hello"; 
void strev(char*in,char*out,int len){
int i;
对于(i=0;i

请注意,它不处理字符串终止符。

可能是另一个标题?虽然示例是用于反转字符串的代码,但实际的问题是关于修改数组和字符串文字您是否有任何理由不使用
strev()
?此外,这将使用多字节字符中断。
char *s = "hello"; 
char s[] = "hello"; 
void strrev(char *in, char *out, int len){
    int i;

    for(i = 0; i < len; i++){
        out[len - i - 1] = in[i];
    }
}