用于将字符转换为C

时间:2015-07-31 03:54:06

标签: c string casting character atoi

是否有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;
}

3 个答案:

答案 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;