#include <stdio.h>
main()
{
char* str;
char* strrev;
int i = 0;
int j = 0;
int c;
printf("Enter the string\n");
scanf("%[^\n]%*c", str);
while (*(str + i) != '\n')
{
i++;
}
for (c = i; c >= 0; c--)
{
*(strrev + j) = *(str + c);
j++;
}
}
这是我反转字符串的代码。当我编译代码时,它给出了错误segmentation failure
。请有人帮助我理解错误并认识到我的错误。
谢谢
最佳答案
有很多问题:
- 您永远不会为
str
或strrev
分配内存。这就是它崩溃的原因;写入未初始化的指针会调用未定义的行为,通常会导致段错误。 - 当您可以只使用
fgets()
时,您正在使用scanf()
进行复杂的转换。 - 您应该使用
strlen()
而不是循环查找字符串结尾。
关于使用指针反转字符串的 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000465/