c - 反转字符串时获取 "Segmentation fault Core Dumped Error "

标签 c string algorithm pointers segmentation-fault

我正在尝试学习 C,在反转字符串时遇到此错误。我不太熟悉内存分配的东西,你能指出我做错的地方吗?

#include<stdio.h>
#include<string.h>
char* strrev(char *str);
int main()
{
  char str[1000];
  char *str1;
  printf("Please enter a String\n");
  gets(str);

  str1=strrev(str);
  puts(str1);

}

char* strrev(char *str)
{
  char *str1;
  int i,length,c;
  length=strlen(str);

  for (i=length-1;i<=0;i--)
  {
     *(str1+c) = *(str+i);
     c++;
  }
  *(str1+c) ='\0';
  return str1;

}

最佳答案

  for (i=length-1;i<=0;i--)

这永远不会运行(除非字符串是 0 或 1 个字符长),因为 i<=0 ,应该是i>=0可能吧。

一般来说,您需要使指针指向某些有效的内存,以便能够取消引用它。在你的情况下,你可能应该使用 malloc用于分配足够数量的字节,并将其结果分配给 str1 。然后你就可以像你正在做的那样写入它。

关于c - 反转字符串时获取 "Segmentation fault Core Dumped Error ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522312/

相关文章:

java - 为什么 "while"在普林斯顿的加权快速联合实现中使用

algorithm - 哪种数据结构/算法可以找到动态 MST(或有根树)路径上的最小节点

c - 如何始终使错误的 C 程序出现段错误?

c - scanf() 语句上的段错误(核心转储)

PHP 库 - 它们是什么以及如何创建一个

python - 使用 Python 生成两个字符串的组合

c - 如何使用结构将指针值从单独的函数传递回 main

java - java中查找子字符串时字符串索引越界异常

Java - 反编译时字符串等于

确定 A 是否在 B 的倍数的 X 范围内的算法