c - 访问 char 字符串时无法理解段错误的原因

标签 c segmentation-fault strcpy

运行以下代码后出现段错误:

int main(){
    const char *string = "This is not reverse";
    char *reverse;
    char temp;
    int length, i = 0;
    length = strlen(string);
    strcpy(reverse, string);

    while(i < (length/2)){
       temp = *(reverse+i); // this is the reason for segmentation fault..but why? 
       i++;
    }

}

谁能解释一下原因

最佳答案

您需要为reverse 分配空间。例如

char *reverse = malloc(strlen(string) + 1);

顺便说一句,其余代码似乎有算法错误。我想你想做的是:

#include <string.h>
#include <malloc.h>

int main(){
  const char *string = "This is not reverse";
  int length = strlen(string);
  char *reverse = malloc(length + 1);

  int i = 0;
  while(i < length){
    *(reverse + i) = *(string + length - i - 1);
    i++;
  }

  printf("%s\n", reverse);
  return 0;
}

关于c - 访问 char 字符串时无法理解段错误的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886967/

相关文章:

c - 如何使用 tcp/ip 将文件及其文件名从客户端发送到服务器?

segmentation-fault - 什么时候处理 SIGSEGV 信号有意义?

c - strcpy 函数行为

c - EXC_BAD_ACCESS(代码=1,地址=0x0)

c - 如何在不使用 ncurses 的情况下在 linux 终端上设置终端背景颜色?

c - 如何读取下一行然后调用函数?

c - 当父进程调用 exec 命令时,子进程会发生什么

c - 为什么这段代码会出现段错误?共享内存IPC SYSV

c++ - 由于进程退出期间的静态变量清理,c++ STL 映射中的段错误查找

c - strcpy() 函数参数