2016-07-25 5 views
0

C言語では、ポインタ文字列に値を代入しようとしています。私はchar配列を使用することはできません、私はポインタ文字列を使用する必要があります。だからどうすればいいのか教えてください。C言語のポインタ文字列に値を代入する方法

私はこのようなことをしていますが(コードが与えられています)、私のコードを実行すると、エラーが表示されますprogram stopped working。あなたは文字列リテラルを変更することはできません

#include <stdio.h> 


int main (void) { 

    char *myString = " "; 
    int value = 1; 

    myString[0] = value+'0'; 

    printf("%s\n",myString); 

    return 0; 
} 
+0

「それは機能していません」というのは実際には問題の説明ではありません。何が起こっていますか?何が起こると思いますか? –

+0

今すぐ見る@MarcusMüller –

+1

あなたはそれをすることはできません - 物語の終わり。 – immibis

答えて

3

myStringは、文字列リテラルのための一定のストレージを指すように初期化されます。変更しようとすると、未定義の動作が発生します。文字列のコピーを作成するためにstrdup()を使用します。

#include <stdio.h> 
#include <string.h> 

int main(void) { 
    char *myString = strdup(" "); 
    int value = 1; 

    myString[0] = value + '0'; 

    printf("%s\n", myString); 

    free(myString); 

    return 0; 
} 

strdup()は、その文字列引数のコピーを受信するのに十分な長ヒープからメモリのブロックを割り当てPOSIXで標準化機能、です。文字列をブロックにコピーし、ブロックへのポインタを返します。そのようなブロックは変更することができ、となるようにfree dとなる必要があります。

+0

OPはC言語では比較的新しいと思われるので、strdup(char * s1) –

関連する問題