我正在尝试使用以下代码向我的缓冲区添加空终止。但我似乎无法传递我的空终止符。这是正确的方法吗?当我 strlen 缓冲区时,值是 10,但我只键入了 9 个字符。
char buffer[256];
int n;
bzero(buffer,256);
fgets(buffer,255,stdin);
buffer[n-1]="\0";
我正在尝试使用以下代码向我的缓冲区添加空终止。但我似乎无法传递我的空终止符。这是正确的方法吗?当我 strlen 缓冲区时,值是 10,但我只键入了 9 个字符。
char buffer[256];
int n;
bzero(buffer,256);
fgets(buffer,255,stdin);
buffer[n-1]="\0";
您正在分配一个字符串而不是一个 char
buffer[n-1] = "\0";
。
试试
buffer[n-1] = '\0';
吧。
你的右手值有错误的类型(char *
当需要转换的东西时char
)。
正确的方法是:
buffer[n - 1] = '\0';
这也可以写成:
buffer[n - 1] = 0;
但第一个清楚地表明我们正在处理角色。我假设n
也设置在某个地方。
如果buffer
是一个数组并且你想确保它的最后一个字符设置为零,你可以使用:
buffer[sizeof buffer - 1] = '\0';
这使用sizeof
运算符来避免重复常量等。请注意,它仅在buffer
是一个正确的数组时才有效,如果您只有一个指针 ( char *buffer;
),它不会做预期的事情。
char buffer[256] = {'\0' };
解决您的问题。