在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;
}
答案 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()
。