私は文字列を逆にしようとしていますが、私のプログラムはコンパイルを行い、 、私はエラーが何を意味するかを理解し、それから来るのどこ私は理解していない:なぜ私はセグメンテーションフォールトを取得していますセグメンテーションフォールト(コアダンプ)を取得していない理由を理解していない
#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;
}
、と私はそれをどのように修正することができますか?
は*クラッシュがあなたのコード内で発生した場所*を見つけるために、デバッガを使用して開始します。次に、関与するすべての変数の値を確認します。それでもあなた自身が理解できない場合は、あなたの質問を編集して、*私たち*の詳細を教えてください。 –
デバッガを使う時間。この小さなプログラムにとって、それは全く難しくありません。クラッシュダンプに関する特定の質問がある場合は、詳細を更新してください。 –
あなたのアルゴリズムは多少間違っています。 –