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