重複の可能性:
Cでcharの文字列を変更することは可能ですか?
#include <stdio.h>
void reverseStr(char *str);
main()
{
reverseStr("abcdef");
}
void reverseStr(char *str) {
char *tmp = str;
char curr;
while (*tmp != '\0') {
tmp++;
}
tmp--;
while (tmp > str) {
curr = *str;
*str = *tmp;
*tmp = curr;
str++;
tmp--;
}
}
実行すると、次のようになります。
/usr/bin/runit/srun_c: line 12: 2809 Segmentation fault /tmp/run_c_executable
一体何が起こっているのですか?私は面接の練習をしています。Cで錆びていて、簡単なことを練習したかったのですが、私の人生ではこれを理解できません。行をコメントアウトするとセグメンテーション違反が消えることに気づきましたが、*str = *tmp;
なぜそれがセグメンテーション違反を引き起こすのかわかりません。感謝します。