c - 段错误的位置

标签 c segmentation-fault

我无法定位segmentation fault的原因 目标-使用指针反转字符串

#include<stdio.h>
#include<string.h>

void swap(char *ptr[], int c)
{
  int i;
  char  *r[40];    
  for(i=0; i<c; i++)
    *(r[c-i]) = *(ptr[i]);
  printf("%s",*r);
}

main()
{
  int i;
  char *ptr[20],str[40];

  printf("enter string:");
  gets(str);
  for(i=0; i<(strlen(str)); i++)
    ptr[i]=&(str[i]);
  swap(ptr,strlen(str));    
}

最佳答案

问题出在这里-

char  *r[40];    
for(i=0;i<c;i++)
  *(r[c-i])=*(ptr[i]);

在这里你声明了 char 指针数组 r 并且你解引用了这些未初始化的指针,它们一定会导致 seg fault 。

关于c - 段错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36750903/

相关文章:

c++ - 是否允许主线程在进入 main() 之前生成 POSIX 线程?

linux - 内核 panic - 不同步。初始化段错误

c - C混淆中的递归

c - 编写一个排序函数对指向结构的指针数组进行排序

c - 为什么我不能释放内存?(调试错误)

c - 创建 PING 程序时限制 ICMP 回显回复

c - 解析文件中的字符串并创建二叉树的程序中出现段错误

c - 这个C代码错了吗?

封闭系统 shellcode 实验(段错误)

c - 算法中处理小数字时出现意外段错误