如何在C中为指针字符串赋值

时间:2016-07-25 21:00:27

标签: c

在C语言中,我试图为指针字符串赋值。我不能使用char数组,我必须使用指针字符串。那么请告诉我该怎么做?

我正在做这样的事情(给出代码),但是当我运行我的代码时,会提示错误program stopped working

#include <stdio.h>


int main (void) {

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

    myString[0] = value+'0';

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

    return 0;
}

1 个答案:

答案 0 :(得分: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 free()