我正在尝试学习 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/