如何编辑以下某个字符?

时间:2016-11-18 17:16:29

标签: c pointers char calloc

所以我有以下代码:

char *something = (char *) calloc(LENGTH, sizeof(char));

长度定义为10。 我在内存中像这样成像:

| [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] | [9] | \ 0 |

如果不定义整个字符,我如何更改[1]?然后能够定义[2],依此类推......

每次更改都不得影响之前的更改!

谢谢!

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);