int main() {
char *w;
strcpy(w, "Hello Word");
printf("%s\n", w);
return 0;
}
上記のコードでcharポインタがどのように使用されているのですか?このC(strcpy)コードの何が問題なのですか?
int main() {
char *w;
strcpy(w, "Hello Word");
printf("%s\n", w);
return 0;
}
上記のコードでcharポインタがどのように使用されているのですか?このC(strcpy)コードの何が問題なのですか?
文字列とともに使用するために、システムにメモリを要求しませんでした。このコードは動作します
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
char w[11];
strcpy(w, "Hello Word");
printf("%s\n", w);
return 0;
}
そのコードは、charの配列として宣言して、そのメモリ空間を予約します。他の方法として、charポインタにmallocまたはcallocを使用する方法があります。それについて読む。
を追加します。 strcpyはメモリ内の未知の場所に書き込みます。
文字列にスペースを割り当てません。 wはいくつかのメモリへのポインタです(初期化されていないのでガベージ値)。
char w[32];
または
char *w = malloc(32);
あなたは文字のためのスペースが割り当てられてする必要があります。
ありがとう!。 – quantum
あなたにエラーが発生していますか? –
なぜそれをしたいのかは分かりませんが、それが必要な状況が生じた場合は、strdup()を使用することがあります。 – Corbin
http://stackoverflow.com/questions/3584926/char-pointers-segmentation-fault、http://stackoverflow.com/questions/2868884/whats-wrong-with-strcpy –