C语言 分段故障的位置



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

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

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

相关内容

  • 没有找到相关文章

最新更新