C 基于K&;R

C 基于K&;R,c,C,在阅读K&R之后,除了熟悉的printf、scanf、getchar等I/O函数外,C中似乎还有很多I/O函数。此外,其中一些函数还存在一些细微差别,如“\n”字符是否存储,EOF或NULL是错误返回,默认输入流(标准输入/键盘),等等。下面是我能想到的I/P函数列表: I/p功能: scanf fscanf 格查尔 fgetc getc 获取 当我单独阅读他们的描述时,我似乎明白了,但如果我不得不选择其中一个而不是另一个,我会感到困惑,一切都会在我的脑海中混乱,如果你知道我的意思的话。谁能清楚

在阅读K&R之后,除了熟悉的printf、scanf、getchar等I/O函数外,C中似乎还有很多I/O函数。此外,其中一些函数还存在一些细微差别,如“\n”字符是否存储,EOF或NULL是错误返回,默认输入流(标准输入/键盘),等等。下面是我能想到的I/P函数列表:

I/p功能: scanf fscanf 格查尔 fgetc getc 获取

当我单独阅读他们的描述时,我似乎明白了,但如果我不得不选择其中一个而不是另一个,我会感到困惑,一切都会在我的脑海中混乱,如果你知道我的意思的话。谁能清楚地总结一下什么时候使用哪个函数以及选择哪个函数的利弊(getchar vs getc vs scanf)


另外一点:在上述场景中,K&R的getline函数适用于哪里?

在OP中,输入和输出之间的差异是显而易见的,所以让我们关注其他方面

差异1:有些函数采用
文件*
,有些函数采用:
stdint
用于输入,
stdout
用于输出)。如果要使用
stdin/stdout
文件,只需使用更简单的文件:

  • 采取
    文件*
    fprintf
    fscanf
    fgetc
    fgets
    fputs
  • 不要使用
    文件*
    printf
    scanf
    getchar
    gets
    putchar
    put
注意模式?以
f
开头的函数具有
文件*
。。。例外情况是
putc
getc
,它们等同于它们的
f*
对应项。只是不要用它们。。。他们很奇怪

差异2:有些函数格式化参数,有些函数采用单个字符,有些函数采用字符串。这很容易看出,我懒得再列举一遍。用最适合你的东西

差异3:某些功能根本不应使用。在我看来,它们是
getc
putc
get
put
。它们分别是怪异的、怪异的、不可能正确使用的和怪异的

差异4:返回值。所有函数返回带有读/写字符的
int
(或
EOF
出错),以下函数除外:

  • fgets
    获取
    ,它们返回作为参数的相同指针(或
    NULL
    如果出错)。这被认为是保存代码行的方便方法:
    memcpy(buffer,fgets(buffer2100,file))。但是,由于您应该在使用指针之前检查错误,因此实际返回值除了与
    NULL进行比较外,几乎没有任何用处。
  • *printf
    返回写入的字节数
  • *scanf
    返回读取的输入项目数

嗯,这不是一个表,而是IHTH。

你能举一个任务的例子吗,它使得在这些函数之间做出决策变得困难?