gpt4 book ai didi

c - C中的gets()函数会自动在输入字符串的末尾添加一个NULL字符吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:42 29 4
gpt4 key购买 nike

我正在编写一个简单的程序来将数字(+ve,32 位)从二进制转换为十进制。这是我的代码:

int main()
{
int n=0,i=0;
char binary[33];
gets(binary);
for (i = 0; i < 33, binary[i] != '\0'; i++)
n=n*2+binary[i]-'0';
printf("%d",n);
}

如果我删除 binary[i]!='\0',那么由于垃圾值,它会给出错误的答案,但如果我不这样做,它会给出正确的答案。我的问题是:gets 函数是否会自动在字符串末尾添加一个“\0”(NULL)字符,还是这只是巧合?

最佳答案

是的,如果需要,可以写到 binary[33] 的末尾。

永远不要使用gets;自动缓冲区溢出。

参见 Why is the gets function so dangerous that it should not be used?了解详情。

关于c - C中的gets()函数会自动在输入字符串的末尾添加一个NULL字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54772430/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com