"fgets"功能的参数太少了?

Noo*_*oob 1 c

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

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;
}
Run Code Online (Sandbox Code Playgroud)

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

dus*_*uff 6

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

这可能是由于过度搜索和替换以替代fgets()被弃用的结果gets().这里的意图可能是:

gets(buffer);
Run Code Online (Sandbox Code Playgroud)

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

fgets(buffer, sizeof(buffer), stdin);
Run Code Online (Sandbox Code Playgroud)

传递正确的参数fgets().

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