1

我正在用c语言编写代码。

  1. char a[]={p,r,a,d,e,e,p}
    我想'0/'在最后添加以使其成为字符串。
    或者除了在最后添加 null 之外,还有什么方法可以使它成为字符串?

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

4

5 回答 5

3

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

char a[] = "pradeep";

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

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

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

于 2012-08-29T12:34:08.270 回答
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 进行连接,但无论如何您必须确保分配了足够的位置。

于 2012-08-29T12:33:56.220 回答
1

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

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

const char *a = "pradeep";

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

于 2012-08-29T12:34:18.480 回答
1
1). char a[]={'p','r','a','d','e','e','p','\0'};

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

2). char *a="pradeep"; 

这会自动在末尾附加 null 以生成有效字符串。

于 2012-08-29T12:35:20.757 回答
0

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

char a[] = "pradeep";

以上与写法相同

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

此外,使用数组是推荐的方式,但上面的第一个替代方案相当于

char *pa = "pradeep";

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

于 2012-08-29T12:38:18.273 回答