我是新来的c,并且被字符串结尾字符'\ 0'弄糊涂了,我应该分配它吗?我应该在c中手动分配字符串结尾字符' 0'吗?
例如,我想存储一个最大长度为6的字符串;
如果我使用数组,我应该使用char str[6]
还是char str[7]
?
char as[3] = "abc";
printf("%s\n", as);
//seems no problem
如果我使用字符指针,我应该使用char *str = malloc(6)
或char *str = malloc(7)
?
是的,请。加上1. – pablo1977
你想存储一个最大长度为6的字符串。你应该使用'char str [7]'。如果你使用char指针,你应该使用'char * str = malloc(7);'也'printf(“%s \ n”,as); //这problem' – BLUEPIXY
记住,只是因为事情似乎工作,这并不意味着它是正确的。在你的例子中,'char as [3] =“abc”',可能会或可能不会是内存中'as'后面的零字节。 'printf'简单*假设*它有一个指向有效字符串的指针。行为是未定义的。 –