改变malloc的元素';C中的d字符串?

改变malloc的元素';C中的d字符串?,c,string,malloc,C,String,Malloc,这样做之后, char* example = (char*)malloc(10); 如何将第5个字节更改为“a”,以便printf(“%s”,示例)会给我一个“a”?由malloc返回的内存是统一的。除了将第5个字节设置为'a',还需要将其他字节设置为空格,并且需要添加一个空终止字节 最简单的方法是strcpy: strcpy(example, " a "); 通过malloc返回的内存是单元化的。除了将第5个字节设置为'a',还需要将其他字节设置为空格,并且需要添加一个空终止字

这样做之后,

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

如何将第5个字节更改为“a”,以便
printf(“%s”,示例)
会给我一个
“a”

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

最简单的方法是
strcpy

strcpy(example, "    a    ");

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

最简单的方法是
strcpy

strcpy(example, "    a    ");

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

example[4] = 'a';
但是,请注意,
malloc
不会将内存初始化为任何特定值-它(很可能)不会全部为空或全部为0。这将是不确定的。如果希望
'a'
周围的元素为空,则还必须显式分配它们。另外,请记住在结尾处写入0终止符,否则
示例
将不包含字符串

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

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!
(大小i=0;i<3;i++)的

示例[i]='';
示例[4]=“a”;
对于(大小i=5;i<9;i++)
示例[i]='';
示例[9]=0;//别忘了字符串终止符!

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

example[4] = 'a';
但是,请注意,
malloc
不会将内存初始化为任何特定值-它(很可能)不会全部为空或全部为0。这将是不确定的。如果希望
'a'
周围的元素为空,则还必须显式分配它们。另外,请记住在结尾处写入0终止符,否则
示例
将不包含字符串

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

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!
(大小i=0;i<3;i++)的

示例[i]='';
示例[4]=“a”;
对于(大小i=5;i<9;i++)
示例[i]='';
示例[9]=0;//别忘了字符串终止符!

您只需按以下方式操作即可:-

memset(example, ' ',10);
example[9] = 0; //assign end of string character equal to '\0'
example[4] = 'a';
它将如何工作
memset
将用空格填充所有字节,
示例[9]=0
将向其分配字符串结尾字符,并且
示例[4]=“a”;

将在第5个位置分配
'a'

您可以简单地如下所示:-

memset(example, ' ',10);
example[9] = 0; //assign end of string character equal to '\0'
example[4] = 'a';
它将如何工作
memset
将用空格填充所有字节,
示例[9]=0
将向其分配字符串结尾字符,并且
示例[4]=“a”;

将在第5个位置分配
'a'

malloc()返回的不是字符串,而是未初始化的缓冲区。在更改“字符串”之前,必须先用一些字符串初始化它。但是您也需要添加这些空格,并且不要忘记空终止符(
a[9]='\0';
)。此外,不需要强制转换
malloc()
的结果。尝试
char*example=malloc(10)。如何将所有字节初始化为空“”?不需要强制转换malloc的返回,这是不必要的。看:还有<代码>内存集(示例,”,9)
示例[9]=0然后
示例[4]='a'如何将所有字节初始化为空“”?-<代码>内存集(示例,”,9);a[9]='\0'
malloc()
返回的不是字符串,而是未初始化的缓冲区。在更改“字符串”之前,必须先用一些字符串初始化它。但是您也需要添加这些空格,并且不要忘记空终止符(
a[9]='\0';
)。此外,不需要强制转换
malloc()
的结果。尝试
char*example=malloc(10)。如何将所有字节初始化为空“”?不需要强制转换malloc的返回,这是不必要的。看:还有<代码>内存集(示例,”,9)
示例[9]=0然后
示例[4]='a'如何将所有字节初始化为空“”?-<代码>内存集(示例,”,9);a[9]='\0'