【发布时间】:2017-04-04 12:23:25
【问题描述】:
我正在尝试反转一个字符串,我的程序将编译并执行它应该做的所有事情,但是,当我运行应用程序时,我得到Segmentation fault (core dumped),我理解错误的含义,但我不知道'不明白它来自哪里:
#include <stdio.h>
#include <string.h>
char *reverse(char *str)
{
char tmp, *src, *dst;
size_t len;
if (str != NULL)
{
len = strlen(str);
if (len > 1)
{
src = str;
dst = src + len - 1;
while (src < dst)
{
tmp = *src;
*src++ = *dst;
*dst++ = tmp;
}
}
}
return str;
}
int main(int argc, char *argv[])
{
char *str[] = {"a", "ab", "abc", "test", "another test"};
int i;
char s[10000];
for (i=0; i < sizeof(str) / sizeof(str[0]); i++)
{
strcpy (s, str[i]);
printf("Original: %s", str[i]);
printf("Reversed: %s", reverse(s));
}
return 0;
}
为什么会出现分段错误,我该如何解决?
【问题讨论】:
-
首先使用调试器找出代码中发生崩溃的何处。然后检查所有相关变量的值。如果您仍然无法自己弄清楚,请编辑您的问题以告诉我们这些详细信息。
-
是时候使用调试器了。对于这个小程序来说一点也不难。如果您对故障转储有任何具体问题,请更新详细信息。
-
你的算法有点不对。
标签: c segmentation-fault