将arrayof字符转换为字符串
我用c语言编写代码。
-
char a[]={p,r,a,d,e,e,p}
我想在结尾添加'0/'
以使其成为字符串。
或者有没有任何方法使其成为字符串而不是在结尾添加null? -
char *a=pradeep;
通过在末尾添加null将其转换为字符串
您无法更改数组的大小,因此无法向其添加空终止符。 您可以将声明更改为:
char a[] = "pradeep";
这将隐式添加null终止符。 要么:
char a[] = { 'p', 'r', 'a', 'd', 'e', 'e', 'p', 0 };
但字符串文字更简单,更清晰。 大多数(如果不是全部)C字符串库函数都需要以空字符串结尾的字符串。
你的代码没有任何意义,也不会编译。
字符串文字最好使用字符串文字语法编写:
const char *a = "pradeep";
这将包括终止字符,在C字符串处指向一个可用于任何字符串处理函数,打印输出等的字符串。
1). char a[]={'p','r','a','d','e','e','p','\0'};
现在它是一个包含有效字符串的数组。
2). char *a="pradeep";
这会自动在结尾处附加null以生成有效字符串。
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进行连接,但无论如何您必须确保分配了足够的位置。
如果将字符串分配给字符数组,编译器将自动创建正确的数组,并在末尾添加终止'\0'
字符:
char a[] = "pradeep";
以上与写作相同
char a[] = { 'p', 'r', 'a', 'd', 'e', 'e', 'p', '\0' };
此外,建议使用数组,但上面的第一个替代方法相当于
char *pa = "pradeep";
但是,最后,您不能再使用sizeof
运算符,因为它将返回指针的大小而不是字符串的长度。 关于sizeof
运算符的另一个注释,对于前两个示例,它将返回数组的大小而不是字符串的长度,即字符数组的sizeof
将包括终止字符。