功能失败的论据太少了?'?

时间:2017-08-29 23:00:27

标签: c

字面上现在只学习了两个小时。我每天在一小时内使用Sams Teach Yourself C,而我在第二课时只是看似简单的练习。

  

5。以下程序有什么作用? (输入,编译并运行它。)

/* ex02-05.c */
#include <stdio.h>
#include <string.h>
int main(void)
{
    char buffer[256];

    printf( "Enter your name and press <Enter>:\n");
    fgets( buffer );

    printf( "\nYour name has %d characters and spaces!",
                     strlen( buffer ));

    return 0;
}

所以书的后面说最终结果应该允许我输入并命名并让它告诉我空格和字符的数量。但是,我收到一条错误,指出在第9行和第34行中有很少的参数来运行fgets;?

1 个答案:

答案 0 :(得分:5)

这是书中的错误。就像编译器所说的那样,fgets()需要三个参数。

这可能是过度搜索和替换以替换fgets()弃用gets()的结果。这里的目的可能是:

gets(buffer);

会在大多数现代编译器上产生警告,或者

fgets(buffer, sizeof(buffer), stdin);

将正确的参数传递给fgets()

这个错误令人不安,因为它表明本书的其他部分可能已经不经意地编写或更新。小心翼翼。