getchar / putchar,gets / puts和fgets / fputs(在C中)有什么区别?

AkThao

我目前正在研究C语言中的输入和输出,我发现大约有十亿种不同的获取输入的方法,例如getch,getchar,gets和fgets,以及与输出相同的方法(putchar,puts,fputs等) )。

所有这些不同的I / O方法都使我感到困惑,因此我来问一下上述功能之间的基本区别是什么。

我还使用这些不同的功能编写了一些代码,并根据我所学的知识对它们的工作方式进行了评论,但是我不确定我的理解是否正确。我在其他地方也阅读过它们,但是解释非常复杂,而且似乎不连贯。

因此,有人可以告诉我是否正确使用它们,如果不正确,应该如何使用它们以及它们之间的主要区别是什么?

这是我的代码:

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <ctype.h>

void individualCharacters()
{
    char theChar;

    while ((theChar = getchar()) != '~') {  //    getchar() stores all characters in a line buffer as it is entered until newline is entered
        putchar(theChar);    // putchar() prints the characters in the line buffer and does not print a newline, line buffering depends on compiler
    }
}

void withoutF()
{
    char name[50];

    printf("What is your name? ");

    gets(name);    // receives a string until newline is entered, newline is then replaced with string terminator, array limit should not be passed

    puts("Hi");    // only prints one string at a time and adds the newline because gets() previously replaces the newline
    puts(name);
}

void withF()
{
    char name[50];

    printf("What is your name? ");

    fgets(name, 50, stdin);    // does add a newline so the newline takes up one space in the array, it stores input until either newline is entered or array limit is reached

    fputs("Hi ", stdout);    // does not print a newline but prints the string input up to the array limit
    fputs(name, stdout);
}

void main()
{
    //sum();

    //individualCharacters();

    //withoutF();

    //withF();

    //printRandomString();
}

这些只是我编写的一些函数,它们以不同的方式获取输入和显示输出,但是我很难理解为什么会有这么多种不同的方式。

如果我在使用I / O功能时遇到任何错误,请随时告诉我,以便我进行修改。

谢谢

约翰·波德

fgets-SIZE-1从指定的流中最多将字符读取到缓冲区中,如果有空间,则包括结尾的换行符。在缓冲区的末尾添加一个0终止符,使其成为有效的C字符串:

char buffer[SIZE];

if ( fgets( buffer, sizeof buffer, stdin ) ) // read from standard input
  do_something_with( buffer );
else
  error();

成功时,fgets返回输入缓冲区的地址。在失败或文件结束时,它返回NULL

fgetc-从指定的输入流中读取单个字符并返回它:

FILE *input_stream = fopen( "some_file", "r" );
int c;
while ( (c = fgetc( input_stream )) != EOF )
  do_something_with( c );

gets-C99之后不推荐使用,从C2011中完全删除。像一样fgets,它将从标准输入中读取字符序列到缓冲区中,并添加一个0终止符,但是fgets与之不同的是,它没有提供限制输入的机制,这使其成为一种流行的恶意软件利用程序。同样,它不会将尾随换行符存储到缓冲区。保证使用它会在您的代码中引入一个故障点。假装您从未听说过它。

getc-与相同fgetc,除了可以实现为宏。

getchar -从标准输入中读取单个字符:

int c;
...
while( (c = getchar()) != EOF )
  do_something_with( c );

fputs -将字符串写入指定的输出流:

char str[SIZE];
...
fputs( str, output_stream ); 

fputc -将单个字符写入指定的输出流:

while ( i < strsize )
  fputc( str[i], output_stream );

putc-与相同fputc,除了可以实现为宏

putchar -将单个字符写入标准输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C语言中的Putchar和Getchar

来自分类Dev

我有两个与getchar()和putchar()有关的问题

来自分类Dev

C-使用getchar和putchar交换字符

来自分类Dev

用getchar()读入一段,并用循环和putchar()打印

来自分类Dev

gets和scanf有什么区别?

来自分类Dev

在C语言中使用putchar和getchar删除多个空格

来自分类Dev

fgets和gets之间的区别

来自分类Dev

fgets和current有什么区别?

来自分类Dev

使用命令行参数中的getchar和putchar编码程序以发送以进行解码

来自分类Dev

getchar / fgetc和putchar / fputc中的int和char之间的区别?

来自分类Dev

使用getchar()和putchar()输入和输出带有数组的字符集

来自分类Dev

getchar()!=''和getchar()=''

来自分类Dev

C:getchar()和putchar()

来自分类Dev

涉及getchar()和putchar()的C简单代码意外输出

来自分类Dev

带有getchar()和EOF的C程序

来自分类Dev

getchar()和putchar()函数背后的理论

来自分类Dev

通过getchar和putchar打印多行

来自分类Dev

C编程语言,第1章练习1.10(Getchar和Putchar)

来自分类Dev

<%=和rails中的“ puts”命令有什么区别?

来自分类Dev

在C中使用putchar和getchar删除多个空格

来自分类Dev

了解C语言中的getchar()和putchar()

来自分类Dev

C语言中scanf和getchar之间的区别

来自分类Dev

使用命令行参数中的getchar和putchar编码程序以发送以进行解码

来自分类Dev

putchar()和getchar()循环说明

来自分类Dev

C 编程,如果 getchar 和 _Bool

来自分类Dev

使用 putchar() 和 getchar() 打印单个字符

来自分类Dev

关于 getchar()/putchar() 功能的说明

来自分类Dev

使用 getchar() 和 putchar() 是否安全

来自分类Dev

printf("%s")、printf(s) 和 fputs 之间有什么区别?

Related 相关文章

  1. 1

    C语言中的Putchar和Getchar

  2. 2

    我有两个与getchar()和putchar()有关的问题

  3. 3

    C-使用getchar和putchar交换字符

  4. 4

    用getchar()读入一段,并用循环和putchar()打印

  5. 5

    gets和scanf有什么区别?

  6. 6

    在C语言中使用putchar和getchar删除多个空格

  7. 7

    fgets和gets之间的区别

  8. 8

    fgets和current有什么区别?

  9. 9

    使用命令行参数中的getchar和putchar编码程序以发送以进行解码

  10. 10

    getchar / fgetc和putchar / fputc中的int和char之间的区别?

  11. 11

    使用getchar()和putchar()输入和输出带有数组的字符集

  12. 12

    getchar()!=''和getchar()=''

  13. 13

    C:getchar()和putchar()

  14. 14

    涉及getchar()和putchar()的C简单代码意外输出

  15. 15

    带有getchar()和EOF的C程序

  16. 16

    getchar()和putchar()函数背后的理论

  17. 17

    通过getchar和putchar打印多行

  18. 18

    C编程语言,第1章练习1.10(Getchar和Putchar)

  19. 19

    <%=和rails中的“ puts”命令有什么区别?

  20. 20

    在C中使用putchar和getchar删除多个空格

  21. 21

    了解C语言中的getchar()和putchar()

  22. 22

    C语言中scanf和getchar之间的区别

  23. 23

    使用命令行参数中的getchar和putchar编码程序以发送以进行解码

  24. 24

    putchar()和getchar()循环说明

  25. 25

    C 编程,如果 getchar 和 _Bool

  26. 26

    使用 putchar() 和 getchar() 打印单个字符

  27. 27

    关于 getchar()/putchar() 功能的说明

  28. 28

    使用 getchar() 和 putchar() 是否安全

  29. 29

    printf("%s")、printf(s) 和 fputs 之间有什么区别?

热门标签

归档