分段错误的位置

时间:2016-04-20 17:21:32

标签: c segmentation-fault

我无法找到分段错误的原因 objective - 使用指针反转字符串

#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));    
}

1 个答案:

答案 0 :(得分:3)

问题出在这里 -

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

在这里,您声明了char指针r的数组,并且您取消引用这些未初始化的指针,这些指针必定会导致seg错误。