我正在尝试使用以下代码向我的缓冲区添加空终止。但我似乎无法通过我的null终止符。这是正确的方法吗?当我对缓冲区进行strlen时,值为10,但我只键入了9个字符。
char buffer[256];
int n;
bzero(buffer,256);
fgets(buffer,255,stdin);
buffer[n-1]="\0";
答案 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' };
解决了您的问题。