在C中将字符转换为字符串的API
在C语言中是否有将字符转换为字符串的API 我基本上有一个字符串,想在它的末尾插入一个字符。 说 我希望它看起来像“你好” 我正在寻找一个方便的API,而不是像这样复杂的东西在C中将字符转换为字符串的API,c,string,casting,character,atoi,C,String,Casting,Character,Atoi,在C语言中是否有将字符转换为字符串的API 我基本上有一个字符串,想在它的末尾插入一个字符。 说 我希望它看起来像“你好” 我正在寻找一个方便的API,而不是像这样复杂的东西 #include <stdio.h> #include <string.h> int main(void) { char str[] = "hello"; int len = strlen(str); /*assume this is the character I want to add
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "hello";
int len = strlen(str);
/*assume this is the character I want to add at the end */
str[len] = '1';
str[len+1] = NULL;
printf("%s",str);
return 0;
}
#包括
#包括
内部主(空)
{
char str[]=“你好”;
int len=strlen(str);
/*假设这是我想在结尾添加的角色*/
str[len]=“1”;
str[len+1]=NULL;
printf(“%s”,str);
返回0;
}
str
是一个由六个字符组成的数组:'h'
,'e'
,'l'
,'l'
,'o'
和'\0'
。如果执行str[strlen(str)]=“1”
,则覆盖终止的num
字符(与NULL
指针不同)。当您执行str[strlen(str)+1]='\0'
时,您将写入数组的末尾
str[len+1] = NULL;
即使使用可变长度阵列,也无法在分配存储后调整阵列的大小
您可以为字符串分配额外的空间,如下所示:
char str[ 7 ] = "hello";
size_t len = strlen(str);
str[ len ] = '1';
str[ len + 1 ] = '\0';
在这行中,您的尺码是6号('h'、'e'、'l'、'l'、'o'、'\0')
所以,在这一行之后,它变成了
str[len] = '1';
到
下面的一行超出了数组的大小,因此这是不允许的,并且不能调整数组的大小
str[len+1] = NULL;
您可以首先分配一个较大的数组
char str[7] = "hello";
若你们想在C中找到一种简单的方法,你们可以使用函数
#include <stdio.h>
#include <string.h>
int main()
{
char str1[8] = "hello";
char str2[2] = "1";
strcat(str1, str2);
printf("%s",str1);
return 0;
}
#包括
#包括
int main()
{
char str1[8]=“你好”;
字符str2[2]=“1”;
strcat(str1、str2);
printf(“%s”,str1);
返回0;
}
char str[]=“你好”代码>-->char str[8]=“你好”
将允许1个额外字符您希望API调用将字符附加到以null结尾的字符数组中吗?没有人再写代码了:(这里是“1”是一个字符串。我希望1成为一个字符并且仍然能够追加。但我不知道要追加多少个字符。当然你不会。这就是为什么你不能使用固定大小的数组来扩展字符串。你需要理解malloc
,realloc
,strcat
等(特别是strcat的问题)。一步一个脚印。我的回答回答了您的具体问题。
str[len+1] = NULL;
char str[7] = "hello";
#include <stdio.h>
#include <string.h>
int main()
{
char str1[8] = "hello";
char str2[2] = "1";
strcat(str1, str2);
printf("%s",str1);
return 0;
}