2016-07-25 336 views
0

在C語言中,我試圖給指針字符串賦值。我不能使用char數組,我必須使用指針字符串。所以請告訴我該怎麼做?如何爲C中的指針字符串賦值0

我正在做這樣的事情(給出的代碼),但是當我運行我的代碼時會提示錯誤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標準的功能,從堆足夠長的時間來接收它的字符串參數的副本分配的內存塊。它將字符串複製到它並返回一個指向該塊的指針。這樣的塊可以修改,當不再需要時應該是freed和free()

+0

也許你應該解釋一下'strdup(char * s1)',因爲OP對於C來說似乎比較新。 –