所以我有以下代码:
char *something = (char *) calloc(LENGTH, sizeof(char));
长度定义为10。 我在内存中像这样成像:
如果不定义整个字符,我如何更改[1]?然后能够定义[2],依此类推......
每次更改都不得影响之前的更改!
谢谢!
答案 0 :(得分:1)
长度定义为10.我在内存中像这样对它进行成像
不正确的。首先,只有10个字节(您的图片显示11个),其次,所有这些字节都填充了'\0'
(calloc()
完成)。
如果不定义整个字符,我如何更改[1]?然后能够定义[2],依此类推......
如果您指的是“更改”,则可以将它们编入索引,如:
something[1] = 'a';
something[5] = 'q';
等等。
但请记住,将其用作C字符串可能无效(例如,使用something
打印printf("%s", something);
),因为存在中间零字节。
答案 1 :(得分:1)
您的代码
char *something = (char *) calloc(LENGTH, sizeof(char));
给你10个(不是11个)字节,全部初始化为0。
你可以在这里改变你想要的任何字节
something[1] ='?';
如果您使用标准例程,例如printf
这当然会在第一个字节中找到'0'并将其解释为字符串的结尾。
完成后不要忘记释放它
free(something);