gpt4 book ai didi

基于K&R的C中各种I/O功能对比

转载 作者:行者123 更新时间:2023-12-04 04:50:45 24 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

8年前关闭。



Improve this question




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

输入/输出功能:
扫描
fscanf
获取字符
fgetc
获取
获取


当我单独阅读他们的描述时,我似乎明白了,但如果我必须选择一个而不是另一个,我会感到困惑,如果你明白我的意思,一切都会在我的脑海中困惑。任何人都可以清楚地总结何时使用哪个功能以及选择一个的优缺点(getchar vs getc vs scanf)?

加分点:K&R 的 getline 函数在上述场景中适用于何处?

最佳答案

Input 和 Output 之间的区别在 OP 中很明显,所以让我们关注其他的。

差异1 : 有些函数需要一个 FILE* ,有些人会假设一个:stdint对于输入,stdout输出)。如果您打算使用 stdin/stdout文件,只需使用更简单的:

  • FILE* :fprintf , fscanf , fgetc , fgets , fputc , fputs .
  • 不带FILE* :printf , scanf , getchar , gets , putchar , puts .

  • 注意图案?以 f 开头的函数有 FILE* ... 异常(exception)是 putcgetc ,相当于他们的 f*同行。只是不要使用它们......它们很奇怪。

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

    差异3 : 有些功能根本不应该使用。 IMO 他们是 getc , putc , gets , puts .它们分别是奇怪的、奇怪的、无法正确使用的和奇怪的。

    差异4 : 返回值。所有函数返回 int带有读/写字符(或 EOF 出错),除了:
  • fgetsgets返回与它们作为参数相同的指针(如果错误,则返回 NULL)。这被认为可以方便地保存代码行:memcpy(buffer, fgets(buffer2, 100, file)); .但是由于您应该在使用指针之前检查错误,因此除了将其与 NULL. 进行比较之外,实际的返回值大多是无用的。
  • *printf返回写入的字节数。
  • *scanf返回读取的输入项数。

  • 嗯,它不是一张 table ,而是 IHTH。

    关于基于K&R的C中各种I/O功能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17474380/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com