首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

标准输入重定向到文件后,如何连续读入,如何判断标准输入流结尾?cin.eof();

上一篇文章,我们讲到:C、C++ 标准输入重定向 & 万能头 - 编程技巧 https://www.cnblogs.com/xuyaowen/p/c-cpp-reopen.html; 然而,在重定向过程中...,我们需要从文件中循环读入;这时候我们需要使用下面几个方法: bash-3.2$ cat in.txt 1 2 3 4 5 6 7 8bash-3.2$ bash-3.2$ cat in.txt...1 2 3 4 5 6 7 8 bash-3.2$ 方法1和方法3在上面两种情况中表现相同;方法2 会因为文件尾的空格,产生i计数的不同;具体可以自行测试; #include #...#include using namespace std; vector inarray; int main(){ freopen("in.txt", "r", stdin...cout << inarray.size()<< endl; cout << i << endl; return 0; } 但是这几个方法又有所不同;cin.eof() 每行的最后,还是有空格或者回车的时候

79210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    学习文件和文件操作

    那是因为C语⾔程序在启动的时候,默认打开了3个流: • stdin 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。...w写数据,会把原有数据清空 文件的顺序读写 所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀ 般指适⽤于标准输出流和其他输出流(如⽂件输出流)。...对⽐⼀组函数: scanf/fscanf/sscanf scanf 从标准输入流上读取格式化的数据 fscanf 从指定输入流上读取格式化的数据 sscanf  printf/fprintf/sprintf...long int ftell ( FILE * stream ); 文件读取结束的判定 在⽂件读取过程中,不能⽤feof函数的返回值直接来判断⽂件的是否结束。...⽂本⽂件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets ) 例如: • fgetc 判断是否为 EOF  • fgets 判断返回值是否为 NULL  .

    10910

    C语言——文件操作

    文件的打开和关闭 流和标准流 流 我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念...事实上,C语⾔程序在启动的时候,默认打开了3个流: stdin - 标准输⼊流。 在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。...fclose(fp); fp = NULL;//避免fp成为野指针 return 0; } 我们在标准输入流和标准输出流进行一个简单的测试 //标准输入流,标准输出流 #include<stdio.h...对比 printf --针对标准输出流( stdout )的,将数据以格式化的形式, 输出到屏幕上 scanf ﹣针对标准输入流( stdin )的,从键盘上输入格式化的数据 fprintf...⽂本⽂件读取是否结束,判断返回值是否为 EOF (fgetc)或者 NULL (fgets) ——fgetc 判断是否为 EOF .

    7010

    【C语言】文件操作详解 - 从打开到关闭

    那是因为C语言程序在启动的时候,默认打开了3个流: • stdin: 标准输入流,在大多数的环境中从键盘输入,scanf函数就是从标准输⼊流中读取数据。...fclose(pf); pf = NULL; return 0; } 程序的运行结果: 上面说的适用于所有输入流⼀般指适用于标准输入流和其他输入流(如文件输入流);所有输出流⼀般指适用于标准输出流和其他输出流...int main() { int ch = fgetc(stdin);//从键盘上(标准输入流)上读取 fputc(ch,stdout); //将字符输出(写)到屏幕(标准输出流) return...文件读取结束的判定 8.1 被错误使用的feof EOF - end of file :文件结束的标志 所以大家都会认为feof函数是用来判断文件是否结束的,但是其实并不是。...例如: fgetc判断是否为 EOF 。 fgets 判断返回值是否为 NULL . 2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。

    9610

    C语言:文件操作详解

    因为在C语言程序启动的时候,默认打开了3个流: • stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。...//关闭文件 fclose(pf); return 0; } 五、文件的顺序读写 顺序读写函数介绍: 上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流...,从键盘上读取,而fscanf是所有的标准输入流都可以,参数可以传文件流也可以跟scanf一样传stdin(标准输入流),而sscanf是从一个字符串中读取。...:作用是检查错误指示灯(即检查操作目标文件的过程中是否出现了错误) 8.3 判断文本文件是否读取结束的方法 ⽂本⽂件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets...) 例如: • fgetc 判断是否为 EOF • fgets 判断返回值是否为 NULL . 8.4 判断二进制文件是否读取结束的方法 ⼆进制⽂件的读取结束判断,判断返回值是否⼩于实际要读的个数。

    56610

    深入挖掘C语言 ---- 文件操作

    默认打开了3个流: stdin: 标准输入流, 在大多数的环境中从键盘输入, scanf函数就是从标准输入流中读取数据 stdout: 标准输出流, 大多数的环境中输出到显示器界面, printf函数就是将信息输出到标准输出流中...stdin, stdout, stderr 三个流的类型是: FILE* ,通常称为文件指针....顺序读写 上⾯说的适⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀ 般指适⽤于标准输出流和其他输出流(如⽂件输出流)。 3....读取结束判定 文本文件: 读取过程中不能用feof函数的返回值直接来判断文件是否结束 feof的作用是: 当文件读取结束的时候, 判断是否读取结束的原因是否是: 文件末尾 fgetc判断是否为EOF...= EOF) // 标准C I/O读取⽂件循环 { putchar(c); } //判断是什么原因结束的 if (ferror(fp)) puts("I/O error when reading

    9810

    C语言 文件操作

    ,也需要从外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。...标准流          C语言程序在启动的时候,默认打开 stdin stdout stderr三个流,分别是标准输入流,标准输流, 标准错误流.        ...stdin,由键盘输入 scanf就是从标准输入流读取数据         stdout标准输出流,大多数的环境中输出给显示器,printf就是输出         stderr输出到显示器        ...stream); 特殊指令         feof         feof无法用返回值判断文件是否结束,它用于当文件结束时候,判断是读取结束的原因是否是遇到文件结尾结束         1.文本文件是否结束时...EOF(fgetc)和NULL(fgets)         2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数

    9210

    C语言文件操作

    标准流 • stdin-标准输⼊流 • stdout-标准输出流 • stderr-标准错误流 这是默认打开了这三个流,我们使⽤scanf、printf等函数就可以直接进⾏输⼊输出操作的。...⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流一般指适⽤于标准输出流和其他输出流(如⽂件输出流)。...fputs将字符串写入流函数从指定的地址(str)开始复制,直到到达结束的空字符('\0')。这个终止的空字符不会复制到流中。...五.文件读取的判定 5.1被错误使⽤的 feof 牢记:在文件读取过程中,不能用feof函数的返回值直接来判断文件的是否结束。 1....⽂本⽂件读取是否结束,判断返回值是否为EOF ( fgetc ),或者NULL (fgets) 例如: • fgetc 判断是否为 EOF .

    5810

    CCPP输入输出函数汇总分析

    = EOF.EOF为文件结束标志, 定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin 时,getc...()了. getchar() int getchar(void) getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h中定义的stdin.但是从输入流中读取字符时又 涉及到缓冲的问题...;出错:返回NULL; 文件结尾:NULL; 实现:内存buf <-从stdin所指的流中取1行字符-标准输入流(由fp=stdin所指) 原因:同上; 补充:不推荐使用,问题是调用者在使用gets时,...*restrict format,…) 成功:指定的输入项数;出错:返回EOF;输入出错或在任意变换前已到达文件结尾:EOF; 实现:标准输入流->格式转换->内存变量中。...返回EOF;输入出错或在任意变换前已到达文件结尾:EOF 实现:标准输入流->格式转换->内存变量中。

    1.3K20

    C语言----文件操作

    那是因为C语⾔程序在启动的时候,默认打开了3个流: • stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。...} int main() { int ch=fgetc(stdin);//从键盘(标准输入流)上读取 fputc(ch, stdout);//将字符输出(写)到屏幕(标准输出流)...是标准输入流 fputs(arr, stdout);//stdout是标准输出流 return 0; } fgets如果读取成功的话,那么会返回str--目标空间的起始地址,接不接收无所谓的.../fscanf/sscanf printf/fprintf/sprintf scanf/printf 针对标准输入流(stdin)/标准输出流 (stdout) /格式化输入/输出函数 fscanf/fprintf...= EOF) // 标准C I/O读取⽂件循环 { putchar(c); } //这个循环结束了,那么下面就是我们进行探讨读取结束的原因 //判断是什么原因结束的

    7910

    C语言——P文件操作

    b.标准流 那为什么我们从键盘输⼊数据,向屏幕上输出数据,并没有打开流呢?...那是因为C语⾔程序在启动的时候,默认打开了3个流: • stdin-标准输入流,在大多数的环境中从键盘输入,scanf 函数就是从标准输入流中读取数据。...⽤于所有输⼊流⼀般指适⽤于标准输⼊流和其他输⼊流(如⽂件输⼊流);所有输出流⼀般指适⽤于标准输出流和其他输出流(如⽂件输出流)。...⽂本⽂件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets ) 例如: • fgetc 判断是否为 EOF ....= EOF) // 标准C I/O读取⽂件循环 { putchar(c); } //判断是什么原因结束的 if (ferror(fp)) puts("I/O error when reading

    15510

    C语言中的文件和文件操作

    一般情况下,我们想向流里写数据,或者从流中读取数据,都需要打开流,然后操作 标准流:C语言程序在启动的时候,默认打开3个流: stdin-标准输入流,在大多数的环境中从键盘输入,scanf函数就是从标准输入流中读取数据...stdin、stdout、stderr三个流的类型是:FILE*,通常被称为文件指针。 C语言中,就是通过FILE*的文件指针来维护流的各种操作的。...1.文本文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets) 2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。...fp) { perror("File opening failed"); return EXIT_FAILURE; } //fgetc 当读取失败的时候或者遇到⽂件结束的时候,都会返回EOF...= EOF) // 标准C I/O读取⽂件循环 { putchar(c); } //判断是什么原因结束的 if (ferror(fp)) puts("I/O error when reading

    10810

    CCPP输入输出函数汇总分析

    = EOF.EOF为文件结束标志, 定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin 时,getc...()了. getchar() int getchar(void) getchar主要是从标准输入流读取一个字符.默认的标准输入流即stdio.h中定义的stdin.但是从输入流中读取字符时又 涉及到缓冲的问题... int getchar(void); 成功:返回下一个字符;出错:返回EOF;文件尾:EOF; 实现:内存 <-读一个字符c- 流(由stdin所指的流,是标准输入文件的逻辑代表)...所指的流中取1行字符-标准输入流(由fp=stdin所指) 原因:同上; 补充:不推荐使用,问题是调用者在使用gets时,不能指定缓冲区buf(用户进程)的长度,这样可能造成缓冲区溢出。...返回EOF;输入出错或在任意变换前已到达文件结尾:EOF 实现:标准输入流->格式转换->内存变量中。

    1.8K20

    【C语言篇】文件操作(上篇)

    /data/xxx,表示的就是下下一级路径 文件打开和关闭 流和标准流 流 我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了⽅便程序员对各种设备进...那是因为C语⾔程序在启动的时候,默认打开了3个流: stdin-标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。...打开文件和关闭文件 ⽂件在读写之前应该先打开⽂件,在使⽤结束之后应该关闭⽂件。 在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE*的指针变量指向该⽂件,也相当于建⽴了指针和⽂件的关系。...其实就是比putchar和getchar的对象从标准输入输出流多了个文件的输入输出流,其他例如返回值类型等都是一样的,就是参数多了个流 读取或写入成功返回字符ASCII码,否则返回EOF int main...() { int ch = fgetc(stdin);//从键盘(标准输入流)上读取 fputc(ch, stdout);//将字符输出(写)到屏幕(标准输出流) return 0; } 向文件中写字符

    12510

    【c语言】玩转文件操作

    2.标准流 c语言程序在启动的时候,默认有三个流已经为我们打开: stdin--标准输入流,绝大多数情况下从键盘输入。 stdout--标准输出流,绝大多数情况输出至显示器上。...直到读到EOF为止,说明文件读取结束。...2.对于二进制文件,我们使用fread函数判断其返回值:是否小于实际要读的个数。如果小于,则说明读取结束。 对于以上两种情况,文件读取结束时,我们可以继续判断文件读取结束的原因。...它的原型如下: int feof ( FILE * stream ); 如果文件由于读取到文件末尾而读取结束,则返回EOF;如果是其他情况,则会返回0。...= EOF)//返回EOF则读取结束 { putchar(c); } //判断读取结束的原因 if (ferror(fp)) puts("I/O错误\n"); else if (feof

    16410

    文件操作(几乎最全)

    在以前各章所处理数据的输入输出都是以终端为对象的,即从终端的键盘输⼊数据,运行结果显示到显示器上。...那是因为C语言程序在启动的时候,默认打开了3个流: stdin - 标准输入流,在大多数的环境中从键盘输入,scanf函数就是从标准输入流中读取数据。...所有输入流 fscanf 格式化输入函数 所有输入流 fprintf 格式化输出函数 所有输入流 fread 二进制输入 文件输入流 fwrite 二进制输出 文件输入流 上面说的适用于所有输入流一般指适用于标准输入流和其他输入流...文本文件读取是否结束,判断返回值是否为 EOF (fgetc),或者 NULL (fgets) 例如: fgetc 判断是否为 EOF . fgets 判断返回值是否为 NULL ....= EOF) // 标准C I/O读取⽂件循环 { putchar(c); } //判断是什么原因结束的 if (ferror(fp)) puts("I/O error when reading

    8810

    文件操作学不懂,小代老师带你深入理解文件操作(中卷)

    ⽂件的打开和关闭 4.1 流和标准流 4.1.1 流 我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念...4.1.2 标准流 那为什么我们从键盘输⼊数据,向屏幕上输出数据,并没有打开流呢?...那是因为C语⾔程序在启动的时候,默认打开了3个流: • stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。...这是默认打开了这三个流,我们使⽤scanf、printf等函数就可以直接进⾏输⼊输出操作的。 stdin、stdout、stderr 三个流的类型是: FILE * ,通常称为⽂件指针。...int main() { int ch = fgetc(stdin);//从键盘(标准输入流)上读取 fputc(ch, stdout);//将字符输入(写)到屏幕(标准输出流) } fputs

    10110

    【C语言】文件操作(1)(文件打开关闭和顺序读写函数的万字笔记)

    ⽂件,或者输出内容的⽂件 二、数据文件    本文着重讨论的是数据文件,在以前我们学的知识中,所处理的数据的输⼊都是以键盘输⼊数据,用显示器输出    但是我们之前的程序结果输出到显示器后,结束程序,...那是因为C语言程序在启动时,默认打开了3个标准流: stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据 stdout - 标准输出流,⼤多数的环境中输出⾄显...⽰器界⾯,printf函数就是将信息输出到标准输出流中 stderr - 标准错误流,⼤多数环境中输出到显⽰器界⾯    这是默认打开的三个标准流,我们使⽤scanf、printf等函数就可以直接进⾏输...EOF结束循环,如下: char ch = 0; while ((ch = fgetc(pf)) !...也必然可以从标准输入流读取数据,此时它们的作用就是一致,我们在上面也说过标准输入流是stdin,我们将fscanf的第一个参数写成标准输入流stdin就可以了,如下: fscanf (stdin , const

    13810

    C语言——文件操作

    • stdin-标准输入流,在大多数的环境下从键盘输⼊,scanf函数就是从标准输入流中读取数据。...我们可以通过一个FILE类型的指针,间接访问相关文件,进行文件操作。 文件打开与关闭 无论我们做什么,都得先打开文件,结束后就要关闭文件。...); fprintf:将格式化数据输出到流中 int fprintf ( FILE * stream, const char * format, ... ); 我们前面提到过scanf函数从标准输入流中读取数据...两个函数的例子: 要注意,将字符输出到文件中,其实是将字符写进文件里,所以fopen的打开模式要用“w”或者“w+” 总的来说,这两个函数可以让我们的数据输入输出不再局限于标准输入流和标准输出流,更能应对现实的不同需求...feof的作用:文件读取结束后,判断读取结束的原因:是否是遇到文件末尾。 文件读取判断结束 1.文本文件读取是否结束,判断返回值是否为EOF(fputc),NULL(fputs)。

    7510
    领券