在C中更改malloc'd String的元素?

时间:2018-03-06 22:51:20

标签: c string malloc

这样做之后,

char* example = (char*)malloc(10);

如何将第5个字节更改为“a”,以便printf("%s", example);给我" a "

3 个答案:

答案 0 :(得分:3)

你可以像下面这样做: -

compile

它将如何运作? memset(example, ' ',10); example[9] = 0; //assign end of string character equal to '\0' example[4] = 'a'; 将使用空格填充所有字节,memset会将字符串结尾符号分配到其中,example[9] = 0;将在第5个位置分配example[4] = 'a';

答案 1 :(得分:2)

malloc返回的内存是单元化的。除了将第5个字节设置为'a'之外,还需要将其他字节设置为空格,并且您需要添加空终止字节。

最简单的方法是strcpy

strcpy(example, "    a    ");

答案 2 :(得分:0)

要更改单个元素,只需使用常规数组下标表示法:

example[4] = 'a';

但请注意,malloc并未将内存初始化为任何特定值 - 它(很可能)不会成为所有空白或全部0。它将是不确定。如果您希望'a'周围的元素是空白,那么您也必须明确指定它们。另外,请记住在结尾处写下0终结符,或者example不包含字符串

您可以使用strcpy将新字符串分配给example

strcpy( example, "    a    " ); // 9 characters plus string terminator

或者您可以逐个元素分配:

for ( size_t i = 0; i < 3; i++ )
  example[i] = ' ';

example[4] = 'a';

for ( size_t i = 5; i < 9; i++ )
  example[i] = ' ';

example[9] = 0; // don't forget the string terminator!