1
我想要反轉一個字符串,我的程序將編譯並做所有它應該做的事情,但是,當我運行應用程序時,我得到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;
}
爲什麼會出現分段錯誤,我怎麼能解決這個問題?
通過使用調試器來找出*,其中*崩潰發生在你的代碼開始。然後檢查所有涉及變量的值。如果你仍然無法自己弄清楚,那麼請編輯你的問題,告訴我們*這些細節。 –
它的時間使用調試器。對於這個小程序來說,它不會有任何困難。如果您有關於崩潰轉儲更新細節的任何具體問題。 –
你的算法有點不對。 –