2012-03-13 10 views
0
int main() { 
    char *w; 
    strcpy(w, "Hello Word"); 
    printf("%s\n", w); 
    return 0; 
} 

上記のコードでcharポインタがどのように使用されているのですか?このC(strcpy)コードの何が問題なのですか?

+0

あなたにエラーが発生していますか? –

+0

なぜそれをしたいのかは分かりませんが、それが必要な状況が生じた場合は、strdup()を使用することがあります。 – Corbin

+1

http://stackoverflow.com/questions/3584926/char-pointers-segmentation-fault、http://stackoverflow.com/questions/2868884/whats-wrong-with-strcpy –

答えて

2

文字列とともに使用するために、システムにメモリを要求しませんでした。このコードは動作します

#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を使用する方法があります。それについて読む。

3

メモリが割り当てられません。

は、それが初期化されていないポインタです

w = (char *)malloc(42); 
+2

(無料で)あなたがメモリを終了したとき) – Java42

3

を追加します。 strcpyはメモリ内の未知の場所に書き込みます。

4

文字列にスペースを割り当てません。 wはいくつかのメモリへのポインタです(初期化されていないのでガベージ値)。

char w[32]; 

または

char *w = malloc(32); 

あなたは文字のためのスペースが割り当てられてする必要があります。

+0

ありがとう!。 – quantum

関連する問題