缓冲区空终止

时间:2013-02-04 16:06:42

标签: c

我正在尝试使用以下代码向我的缓冲区添加空终止。但我似乎无法通过我的null终止符。这是正确的方法吗?当我对缓冲区进行strlen时,值为10,但我只键入了9个字符。

char buffer[256];
int n;

bzero(buffer,256);
fgets(buffer,255,stdin);
buffer[n-1]="\0";

3 个答案:

答案 0 :(得分:5)

您指定的字符串不是char buffer[n-1] = "\0";
尝试 buffer[n-1] = '\0'; 代替。

答案 1 :(得分:0)

您的右手值类型错误(char *当需要转换为char的内容时。)

正确的方法是:

buffer[n - 1] = '\0';

这也可以写成:

buffer[n - 1] = 0;

但是第一个明确表示我们正在处理角色。我假设n也设置在某个地方。

如果buffer是一个数组,并且您想确保它的最后一个字符设置为零,则可以使用:

buffer[sizeof buffer - 1] = '\0';

这使用sizeof运算符来避免重复常量等。请注意,只有当buffer是一个正确的数组时它才有效,如果你拥有的只是一个指针(char *buffer;)它将无法完成预期的操作。

答案 2 :(得分:0)

char buffer[256] = {'\0' };

解决了您的问题。