0
我的代码这里 -为什么我在这里得到NZEC错误?
void input(char* m)
{
char ch;
do
{
ch=getchar();
}
while(ch=='\n');
int i=0;
while(ch!='\n')
{
m[i++]=ch;
ch=getchar();
}
}
给NZEC错误。但是,如果我限制与字符输入数len个,比如这个 -
void input(char* m, int len)
{
char ch;
do
{
ch=getchar();
}
while(ch=='\n');
int i=0;
while(ch!='\n'&&i<len-1)
{
m[i++]=ch;
ch=getchar();
}
}
沿细通行证。这是为什么?
字符串的值是事先知道的。它不会超过缓冲区。但是我想知道的是,如何添加长度参数来避免运行时错误?他们仍然可能是缓冲区溢出。 – goelakash 2014-11-21 22:03:14
由于在长度参数中传递了缓冲区的最大长度,并且当到达它们时循环会完成,即使它仍然没有'\ n'。 – Christophe 2014-11-21 22:40:25
理论上,长度参数可以是任意的。它可能会超过缓冲区大小。我理解语法。 – goelakash 2014-11-22 15:25:16