私はCの基礎を学ぼうとしていますが、なぜこのコードが機能しないのかわかりません。 reverse()のwhileループはバスエラーを引き起こします。私はプログラミングインタビューの本でほぼ同じコードを有効な解決策として見つけましたが、私はここに掲載されているこれと他の同様の方法のどちらも、バスエラーなしで私のために働くことはありません。インプレイスストリングin C逆
#include <stdio.h>
void reverse(char* str) {
char* end = str;
char tmp = 0;
if(str) {
while(*end) {
end++;
}
--end;
while(end>str) {
tmp = *end;
*end-- = *str;
*str++ = tmp;
}
}
}
int main() {
char* a = "12";
puts(a);
reverse(a);
puts(a);
return 0;
}
http://stackoverflow.com/questions/4493139/are-string-literals-constと他の多くの質問(少なくとも週に1回以上)を参照してください。 – ephemient