这样做之后,
char* example = (char*)malloc(10);
如何将第5个字节更改为“a”,以便printf("%s", example);
给我" a "
?
答案 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!