私はCの文字列を反転する関数を書いた本の例に従っています。 これは以下の問題です。しかし、私はgccを使ってubuntuの下で実行します。私はsegの欠陥を得る。 私はそれをデバッグしようとしましたが、私はこの行を '* start ++ = * end; segフォルトが発生します。シンプルなcプログラムでsegフォールトを起こすのに問題があります
誰かが私にseg faultを理解するのを助けてくださったことを感謝します。
#include <stdio.h>
#include <stdlib.h>
void myreverse(char* str) {
int len = strlen(str);
char tmp;
char* start = str;
char* end = str + (len -1);
while (start < end) {
tmp = *start;
// this is causing Segmentation fault
*start++ = *end;
*end-- = tmp;
}
}
int main(void) {
char* test = "Hello World";
puts(test);
myreverse(test);
puts(test);
return EXIT_SUCCESS;
}
[Cの文字列定数を変更しますか?](http://stackoverflow.com/questions/480555/modifying-c-string-constants) – Mat
一般に、 'int'は長さを保持するには不十分ですCの文字列。'size_t'は一般的には最良の型で、' strlen() 'が返すものです。 –