将字符数组转换为字符串

时间:2012-08-29 12:31:50

标签: c string char

我用c语言编写代码。

  1. char a[]={p,r,a,d,e,e,p}
    我想在最后添加'0/'以使其成为字符串 或者是否有任何方法可以使其成为字符串而不是在末尾添加null?

  2. char *a=pradeep;
    通过在末尾添加null将其转换为字符串

5 个答案:

答案 0 :(得分:3)

您无法更改数组a的大小,因此您无法为其添加空终止符。您可以将声明更改为:

char a[] = "pradeep";

将隐式添加空终止符。或者:

char a[] = { 'p', 'r', 'a', 'd', 'e', 'e', 'p', 0 };

但字符串文字更简单,更清晰。大多数(如果不是全部)C字符串库函数都需要一个以空字符结尾的字符串。

答案 1 :(得分:1)

char *a="pradeep";

创建一个字符串文字并在末尾添加空字符。

如果您真的想使用类似于1的语法声明它,可以这样做:

char a[] = {'p','r','a','d','e','e','p', 0};

但没有理由这样做。

关于评论中的问题

如果要从收到的n个字符创建字符串,可以执行以下操作:

char *a = malloc(n*sizeof(char)+1);

如果它总是10个字符或更少,您可以将其声明为

char a[11];

然后使用收到的值设置每个a[i],将最后一个设置为0

您也可以使用sprintf进行连接,但无论如何您必须确保分配了足够的位置。

答案 2 :(得分:1)

您的代码没有任何意义,也不会编译。

字符串文字最好使用字符串文字语法编写:

const char *a = "pradeep";

这将包括终止字符,使a指向可用于任何字符串处理函数的C字符串,打印输出等。

答案 3 :(得分:1)

1). char a[]={'p','r','a','d','e','e','p','\0'};

现在是一个包含有效字符串的数组。

2). char *a="pradeep"; 

这会自动在结尾添加null以生成有效的字符串。

答案 4 :(得分:0)

如果为字符数组指定文字字符串,编译器将自动创建正确的数组,并在末尾添加终止'\0'字符:

char a[] = "pradeep";

以上与写作相同

char a[] = { 'p', 'r', 'a', 'd', 'e', 'e', 'p', '\0' };

此外,建议使用数组,但上面的第一个替代方法相当于

char *pa = "pradeep";

但是,最后一次,您不能再使用sizeof运算符,因为它将返回指针的大小,而不是字符串的长度。关于sizeof运算符的另一个注释,对于前两个示例,它将返回数组的大小而不是字符串的长度,即字符数组的sizeof将包括终止字符。< / p>