#include <stdio.h>
#include "../library/string.c"
int test(char* left, char* right) {
while (*left != '\0') {
printf("%p\t%d, %d\n", left, (*left) + 1, *left);
left++;
}
return 0;
}
int main() {
char* a = "hello,kittz";
char* b = "hello,kitty";
test(a, b);
return 0;
}
私は上記のコードを実行し、出力されない:はなぜここにこの原因セグメンテーションフォールト
0x40073f 105, 104
0x400740 102, 101
0x400741 109, 108
0x400742 109, 108
0x400743 112, 111
0x400744 45, 44
0x400745 108, 107
0x400746 106, 105
0x400747 117, 116
0x400748 117, 116
0x400749 123, 122
しかし、私は、なるようにコードを変更:
int test(char* left, char* right) {
while (*left != '\0') {
printf("%p\t%d, %d\n", left, (*left)++, *left);
left++;
}
return 0;
}
出力を伝えます私は何かが間違っていることがある。出力は次のとおりです。 セグメンテーションフォルト(コアダンプ)。コンパイル時に「L」にリテラル「K」を変更しようとしている。すなわち -
のようにポインタを使用することができますし、あなたのセグメンテーションフォルトがあなたのようなのIntを使用することができ、文字列にナビゲート
を発生するラインを表示することができますそれを掲示する前に。答えを得るチャンスが増えます。 – legends2k
あなたは 'gdb'とセグメンテーション違反が起こっている場所を特定するために、あなたのコードのステップにこれを落とし、デバッグフラグ(' -g'を使用して)でこれをコンパイルしようとしたことがありますか? – Jules
これらの '**'は実際のコードではないハイライトであると想定しています。あなたはそれらを取り出して、実行中の実際のコードを表示できます – pm100