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