精华内容
下载资源
问答
  • C语言的I/O函数介绍C语言输入输出函数定义在stdio.h里。本文主要介绍scanf / printf / gets / puts / fopen / fgets / fputs 这几个函数的用法。一. 标准输入/输出1.scanf() 与 printf()函数原型及说明:int scanf...

    C语言的I/O函数介绍

    C语言的输入输出函数定义在stdio.h里。本文主要介绍scanf / printf / gets / puts / fopen / fgets / fputs 这几个函数的用法。

    一. 标准输入/输出

    1.scanf() 与 printf()

    函数原型及说明:

    int scanf(const char *format, ...);

    //scanf() 函数从标准输入设备stdin读取数据,返回与格式化字符串format成功匹配的个数。

    int printf(const char *format, ...);//scanf()函数将指定的字符串输出到标准输出设备stdout,如果成功,则返回输出的字符数(不包括字符串结束标识'\0'),否则,返回一个负数。

    用法举例:

    程序片:

    char* input = malloc(32*sizeof(char));

    scanf("%s",input);

    printf("%s",input);

    free(input);

    输入与输出:

    [liuyz@localhost Desktop]$ gcc -std=c99 -o StdInOutDemo.o StdInOutDemo.c

    [liuyz@localhost Desktop]$ ./StdInOutDemo.o

    who are you ?

    who[liuyz@localhost Desktop]$

    注:printf()函数不会自动输出到新的一行,需要手动使用"\n"指定在何处输出新的一行,例如:printf("123\n456");

    2.gets()与puts()

    函数原型及说明:

    char *gets(char *s);

    //gets()函数从标准输入设备stdin读取一行,然后将读取的数据存储到s指向的内存块中。

    //它将在这行数据的最后添加'\n'。如果成功则返回s,失败则返回NULL。

    //它不检查s是否足够大以存储读取的数据,所以它不安全。

    int puts(const char *s);

    //puts()函数将s和一个换行符下到标准输出设备stdout。如果成功,则返回一个非负数;否则,返EOF

    用法举例:

    程序片:

    gets(input);

    puts(input);

    输入与输出:

    [liuyz@localhost Desktop]$ ./StdInOutDemo.o

    who are u ?

    who are u ?

    [liuyz@localhost Desktop]$注:使用gets()函数的程序在编译是会给出一个警告,因为它是不安全的,所以不建议使用该函数。

    二. 文件操作

    1.fopen()

    函数原型及说明:

    FILE *fopen(const char *path, const char *mode);

    //以mode模式打开path指定的文件。如果成功,返回一个FILE指针;否则,返回NULL。

    //mode:

    //r:只读模式,从文件开始处读

    //r+:读写模式,从文件开始处读写,覆盖源文件的内容

    //w:只写模式,从文件开始处写,清空源文件;文件不存在则新建之

    //w+:读写模式,从文件开始处读写,清空源文件;文件不存在则新建之

    //a:写模式,在文件末尾写入数据;文件不存在则创建之

    //a+:读写模式,从文件开始处读,在文件末尾写入数据;文件不存在则创建之

    用法举例:

    FILE* fp=fopen("test.txt","r");

    2.fgets()和fputs()

    函数原型及说明:

    char *fgets(char *s, int size, FILE *stream);

    //fgets()函数从stream中读取至多size-1个字符并把它存储到s指向的内存块中,读到EOF或者读完一行停止,并在最后添加'\0'。

    //如果stram为stdin,则该函数等价于gets()。

    //如果成功,返回s;否则,返回NULL。

    int fputs(const char *s, FILE *stream);

    //fputs()把s写到stream,不包括s的结束标识'\0'。如果成功,则返回一个非负数;否则,返回EOF。

    //如果stream为stdout,则该函数等价于puts()。

    用法举例:

    //读取一个文件并输出到标准输出设备stdout

    FILE* fp=fopen(fileName,mode);

    if(fp)

    {

    char* p=malloc(bufSize*sizeof(char));

    while(p=fgets(p,bufSize,fp))

    {

    fputs(p,stdout);

    }

    }

    fclose(fp);

    3.fclose()

    函数原型及说明:

    int fclose(FILE *fp);

    //fclose()函数将output写入并关闭文件。如果成功,则返回0;否则,返回EOF。注:文件使用完毕要记得关闭,以免引起其他问题。

    展开全文
  • C语言标准输入输出

    千次阅读 2012-09-28 14:51:15
    C语言标准输入输出  本文介绍C语言里的标准输入输出方法,涉及到字符的输入输出及对文件的输入输出。 第一部分、字符的输入输出 C语言提供两个控制台格式化输入、输出函数printf()和scanf(),这两个函数可以在...
    展开全文
  • 标准输入文件,一般指键盘;scanf()、getchar() 等函数默认从stdin获取输入。 标准输出文件,一般指显示器;printf()、putchar() 等函数默认向stdout输出数据 下面演示用scanf()输入到stdin再由printf()输出到...

    Stdin和Stdout

    stdin stdout
    标准输入文件,一般指键盘;scanf()、getchar() 等函数默认从stdin获取输入。 标准输出文件,一般指显示器;printf()、putchar() 等函数默认向stdout输出数据

    下面演示用scanf()输入到stdin再由printf()输出到stdout的情况。

    #include <stdio.h>
    int main()
    {
    	int a;
    	char ch;
    	do
    	{
    		printf("请输入数据:");
    		scanf("%d",&a);        //键盘输入一个数据。
    		printf("%d",a);        //打印输入的数据。
    		printf("(y/n)");       //控制循环是否继续?
    		scanf("%c",&ch);       //y继续,n退出。	
    	}while(ch == 'y' || ch == 'Y');
    }
    

    这个程序看似没有问题,但实际上 scanf("%c",&ch); 在读键盘输入的数据时出现了问题。
    这里详细讲解一下:
    在这里插入图片描述
    程序运行后首先需要我们输入一个数据
    在这里插入图片描述
    我们输入100 然后终止符(空格或回车均可)我们发现并没有继续执行下去,我们再回车一下
    在这里插入图片描述
    我们发现并没有要求我们输入(y/n)来控制,而是程序自己终止了循环。

    实际上这里的scanf("%c",&ch)已经读取到键盘输入的回车,也就是’\n’字符,我们的输入习惯是,先输入100然后终止符再输入(y/n),但是C语言库中的scanf()是从输入文件缓冲区(也就是stdin)中获取数据,我们再输入第一个数据回车的时候,缓冲区就已经缓存了’\n’字符,而正好第二个scanf()要读取的就是字符型的数据。

    那么怎么避免这个情况呢。

    我们在输入完数据时进行清空输入缓冲区操作fflush(stdin),就不会影scanf("%c",&ch)的读取了。(如下👇)

    在这里插入图片描述
    这里是vs2012里用fflush(stdin)清空了缓冲流,但是vs2019里用的是rewind(stdin)(如下👇)
    在这里插入图片描述
    而rewind(stdin)实质上并不是清空了stdin而是指向了缓冲流的头部,使其再次输入。
    关于rewind()函数的作用和用法,后期再作补充。

    展开全文
  • 使用printf函数时,输出设备默认为标准输出设备(一般是显示器),因此,不需要告诉printf函数显示器在哪。 但如果想从文件中读取输入,情况就不同了,系统中有不同的磁盘,每个磁盘又有成千上万的文件,到底应该从...

    stdio文件型结构体

    使用printf函数时,输出设备默认为标准输出设备(一般是显示器),因此,不需要告诉printf函数显示器在哪。
    但如果想从文件中读取输入,情况就不同了,系统中有不同的磁盘,每个磁盘又有成千上万的文件,到底应该从哪个读呢?要想对文件进行操作,系统需要很多控制信息,包括文件名,文件当前读写位置,缓冲区位置和大小等,为此,C语言提供了“文件型”结构来标示记录待操作文件的信息,该结构定义于头文件stdio.h中,其形式为:

    struct _iobuf
     {
    char *_ptr;//当前缓冲区内容指针
    int   _cnt;//缓冲区还有多少个字符
    char *_base;//缓冲区的起始地址
    int   _flag;//文件流的状态,是否错误或者结束
    int   _file;//文件描述符
    int   _charbuf;//双字节缓冲,缓冲2个字节
    int   _bufsiz;//缓冲区大小
    char *_tmpfname;//临时文件名
    };
    typede f struct _iobuf FILE;
    
    1. 为从文件中读取输入而提供的“文件型”结构来标示记录待操作文件的信息,该结构定义于头文件stdio.h中,形式为:
    struct _iobuf
     {
    char *_ptr;//当前缓冲区内容指针
    int   _cnt;//缓冲区还有多少个字符
    char *_base;//缓冲区的起始地址
    int   _flag;//文件流的状态,是否错误或者结束
    int   _file;//文件描述符
    int   _charbuf;//双字节缓冲,缓冲2个字节
    int   _bufsiz;//缓冲区大小
    char *_tmpfname;//临时文件名
    };
    typede f struct _iobuf FILE;
    
    1. 上述结构体类型示例:
      在这里插入图片描述
      输出结果:
      在这里插入图片描述

    如上图,输入的12345后再次执行打印的时候会先显示1,如果后面继续执行获取ch并打印,就会从2开始每次获取打印输出一个数字,如果执行fflush则清空剩余缓冲区如图
    在这里插入图片描述
    执行fflush后再次打印则输出前一次打印的字符如图:
    在这里插入图片描述
    输入rewind将文件内部的指针重新指向开头如下图:
    在这里插入图片描述
    输出结果如图:
    在这里插入图片描述

    如下图的方法也是一样的:
    在这里插入图片描述

    输出结果:
    在这里插入图片描述

    展开全文
  • C语言标准输入输出重定向

    千次阅读 2018-07-13 18:26:01
    标准输入重定向:freopen("a.txt","r"...#endif在加了这句,本地调试的时候从文件读取输入数据,在线测试的时候还是从标准输入读取输入数据 标准输出重定向:freopen("b....
  • #include ... /*输入输出重定向,输入数据将从in.txt文件中读取 **输出数据将保存在out.txt文件中 */ freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); while(scanf("%d %d", &a,
  • fromhttp://andylin02.iteye.com/blog/10840422011.06C语言标准输入流、标准输出流、标准错误输出流在Linux中,所有对设备和文件的操作都使用文件描述符来进行。Linux中一个进程启动时,都会打开3个文件标准输入...
  • 标准 I/O 库提供了许多复杂的函数用于格式化输出和扫描输入。在很多方面,你使用的标准 I/O 库的方式和使用底层文件描述符一样,需要先打开一个文件以建立一个访问路径,这个操作的返回值将作为其他 I/O 库函数的...
  • c语言文件输入输出

    万次阅读 2017-09-30 11:28:41
    重定向的方法写起来简单、自然,但是不能同时读写文件标准输入输出;fopen的写法稍有繁琐,但是灵活性比较大(例如可以重复打开并读写文件)。如果想把fopen版的程序改成读写标准输入输出,只需要赋值“fin=stdin;...
  • 第十三章 文件????本章要点:????????文件的基本概念?????? 文件的基本函数???????文件的顺序读写???????文件的随机读写???????文件简单应用§13.1 C文件概述?...1、特殊文件(标准输入输出文件或标准设备文...
  • 一个文件就是磁盘上一段命名...这三个文件分别是标准输入,标准输出和标准错误输出,对应的文件描述符分别为0,1,2.系统默认标准输入设备为键盘,标准输出设备为显示器。  写一个常用的计数程序先练练手。   #include
  • 我对C语言输入输出理论的理解 第一次提交:出于各种原因,我于2020年开始学习C.现在,我将证明我对学习计算机科学的深奥原理感兴趣。 经过进一步的调查,我得出结论,从60年代末开始,最初的Unix家族的语言很可能...
  • 标准流,stdin和stdout,是标准输入输出流,键盘输入就是用的stdin。文件结尾,C不关心操作系统是如何检测文件结尾,C在检测到文件结尾之后返回EOF。getchar();——从输入缓冲区读取一个字符,不管字符是什么,都...
  • //这个文件主要是:测试C语言输入输出一: 输入输出(1)标准 1. printf: Writes to the standard output (stdout) a sequence of data formatted as theformatargument specifieshttp://...
  • fprint()将格式化信息输出到指定的文件流 int fprintf(FILE *stream, const char *format, …); int main(int argc, char const *argv[]) { FILE *fp; fp = fopen("1.txt", "wb"); char *str = "this is a string...
  • 关于C语言输入输出重定向

    万次阅读 2016-04-11 21:19:06
    C语言标准输入输出为stdin和stdout,这两个变量的类型为FILE*类型,也就是说,标准输入输出操作,其本质还是文件操作。 当需要重定向时,可以调用 #include freopen("d:\\data_in.txt","r",stdin); 将输入定向为...
  • C语言 文件输入输出

    千次阅读 2019-07-31 15:37:51
    C语言程序在进行文件操作时遵循如下操作步骤: 打开->读写操作->关闭,通俗地说,打开是获取文件结构、系统为文件分配缓冲区的过程,不打开文件就不能对...stdin:标准输入文件指针,系统分配为键盘。 stdou...
  • 在 C 语言中,输入 意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数...标准输入输出C 语言把所有的设备都当作文件。所以设备(比如显示器)被处理的方式与文件相...
  • 标准流,stdin和stdout,是标准输入输出流,键盘输入就是用的stdin。 文件结尾,C不关心操作系统是如何检测文件结尾,C在检测到文件结尾之后返回EOF。 getchar();——从输入缓冲区读取一个字符,不管字符是什么...
  • 1.从标准输入逐个字符复制到标准输出,一个简单白给的题目,提到标准输入输出,直接就想到scanf和printf这两个函数,对于取字符还有getchar和putchar两个函数,预期效果是什么?从键盘架输入一个字符,从显示器输出...
  • C语言输入输出函数

    2018-03-28 14:25:27
    标准输入里读取下一个字符,相当于getc(stdin)。返回类型为int型,为用户输入的ASCII码,出错返回-1。 int getc( FILE *stream ); 和getchar功能一样,从指定的文件流中读取一个字符,读取后文件指针不会移动 ...
  • 标准输入/输出的重定向包括重定向到内存,或是重定向到文件。下面分别示例说明。 1、输入输出重定向到内存 setbuf函数具有打开和关闭缓冲机制。为了带缓冲进行I/O,参数buf必须指向一个长度为BUFSIZ(定义在stdio.h...
  • stdin:键盘、标准输入 stdout:屏幕、标准输出 stderr:您的屏幕、标准错误 头文件:stdio.h 二、getchar() & putchar() int getchar(void) 从屏幕读取下一个可用字符,并用它返回为一个整数。 int ...
  • C语言输入输出

    2019-10-20 15:55:17
    2)C语言本身不提供输入输出语句,输入输出操作是由C标准函数库中的函数来实现的。 3)要在程序文件的开头用预处理指令#include把有关头文件放在本程序中。 关于头文件的形式: 使用尖括号的话,编译时会先在系统...
  • C语言文件输入输出

    2020-05-10 19:01:40
    文件输入输出 函数:fopen()、getc()、putc()、exit()、fclose() fprintf()、fscanf()、fgets()、fputs() rewind()、fseek()、ftell()、fflush() fgetpos()、fsetpos()、feof()、ferror() ungetc()、setvbuf()、...
  • # C语言标准输入输出 C语言输入输出,是指C程序从键盘、文件等外部获取数据,将数据输出到显示器、文件等外部输出设备中。 C语言通过标准库<stdio.h>输入输出函数提供各种输入输出功能,输入输出可以简单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,437
精华内容 574
关键字:

c语言标准输入输出文件

c语言 订阅