我正在尝试使用fgets读取char值,如下所示:
int main() {
char m_cityCharCount;
// Input the number of cities
fgets(&m_cityCharCount, 4, stdin);
return 0;
}
Visual Studio在执行代码后返回此错误 - Stack around the variable m_cityCharCount was corrupted
我能做点什么吗?
答案 0 :(得分:2)
m_cityCharCount
是一个char,它最多可以容纳一个char,但是你告诉fgets
它是4个字节的缓冲区。即使您只输入了输入键,fgets
也会将新行和空终止符存储到缓冲区,这是一个严重的问题。您需要更大的缓冲区来执行fgets
:
char str[4096];
fgets(str, sizeof str, stdin);
答案 1 :(得分:1)
fgets()的第一个参数是缓冲区上的指针(它的大小应该大于或等于第二个参数。但是sizeof(char)== 1)
\