是否有API将字符转换为C中的字符串?
我基本上有一个字符串,并希望在其末尾插入一个字符。 说,
char str[] = "hello";
我希望它看起来像" hello1&#34 ;;
我正在寻找一个方便的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 at the end */
str[len] = '1';
str[len+1] = NULL;
printf("%s",str);
return 0;
}
答案 0 :(得分:1)
char str[] = "hello";
str
是一个包含六个字符的数组:'h'
,'e'
,'l'
,'l'
,'l'
,'o'
和'\0'
。执行str[strlen(str)] = '1'
时,会覆盖终止NUL
字符(与NULL
指针不同)。当你执行str[strlen(str) + 1] = '\0'
时,你会写出数组的末尾。
即使使用可变长度数组,也只能在分配存储后调整数组大小。
您可以做的是为字符串分配额外的空间,如:
char str[ 7 ] = "hello";
size_t len = strlen(str);
str[ len ] = '1';
str[ len + 1 ] = '\0';
答案 1 :(得分:0)
如果您在C中寻找简单的方法,可以使用strcat()函数。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[8] = "hello";
char str2[2] = "1";
strcat(str1, str2);
printf("%s",str1);
return 0;
}
答案 2 :(得分:-1)
gcloud preview app deploy ~/my_app/app.yaml \
~/my_app/another_module.yaml
在此行中,您的尺寸为6 int len = strlen(str);
。
因此,在此行之后它变为
('h','e','l','l','o','\0')
到
str[len] = '1';
并且下面的行超出了数组大小,所以这是不允许的,你不能调整数组的大小。
('h','e','l','l','o','1')
你可以做的是最初分配一个更大尺寸的数组
str[len+1] = NULL;