1

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

char buffer[256];
int n;

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

3 回答 3

5

您正在分配一个字符串而不是一个 char buffer[n-1] = "\0";
试试 buffer[n-1] = '\0'; 吧。

于 2013-02-04T16:09:39.990 回答
0

你的右手值有错误的类型(char *当需要转换的东西时char)。

正确的方法是:

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

这也可以写成:

buffer[n - 1] = 0;

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

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

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

这使用sizeof运算符来避免重复常量等。请注意,它仅在buffer是一个正确的数组时才有效,如果您只有一个指针 ( char *buffer;),它不会做预期的事情。

于 2013-02-04T16:19:03.207 回答
0
char buffer[256] = {'\0' };

解决您的问题。

于 2015-07-27T09:02:33.443 回答