机试练习总结06:c语言输入&输出&文件读写

一、标准文件

c语言把所有设备当作文件。

stdin:键盘、标准输入

stdout:屏幕、标准输出

stderr:您的屏幕、标准错误

头文件:stdio.h

二、getchar() & putchar()

int getchar(void) 从屏幕读取下一个可用字符,并用它返回为一个整数。

int putchar() 该函数同一时间内只会输出一个单一的字符。

三、gets() & puts() 函数

char *gets(char *s) 从stdin读取一行到s所指向的缓冲区,直到一个终止符或EOF。

int puts(const char *s) 把字符串s和一个尾随的换行符写入到stdout。

四、scanf() & printf() 函数

int scanf(const char *format, ...) 函数从标准输入流 stdin 读取输入,并根据提供的 format 来浏览输入。

int printf(const char *format, ...) 函数把输出写入到标准输出流 stdout ,并根据提供的格式产生输出。

五、文件读写——创建、打开、关闭文本或二进制文件

1. 打开文件

fopen()函数创建一个新的文件或者打开一个已有的文件

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

mode可以是以下值中的一个: 

r:打开一个已有文件,允许读取;

w:打开一个文本文件,允许写入;如果文件不存在,则创建一个新文件;

a: 打开一个文本文件,以追加模式写入文件;如果文件不存在,则创建一个新文件;

r+:打开一个文本文件,允许读写文件;

w+:打开一个文本文件,允许读写文件;如果文件已存在,则文件会被截断为零长度;如果文件不存在,则会创建一个新文件;

a+:打开一个文本文件,允许读写文件;如果文件不存在,则会创建一个新文件;读取会从文件的开头开始,写入只能是追加模式。

若读取的是二进制文件,则需使用下面的访问模式代替上面访问模式:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

2.关闭文件

fcolse()函数

int fclose( FILE *fp );

如果成功关闭文件,fclose()函数返回0,如果关闭文件时发生错误,函数返回EOF。这个函数实际上,会清空缓存区中的数据,关闭文件,并释放用于该文件的所有内存。

EOF是一个定义在头文件stdio.h中的常量。

3.写入文件

fputs()

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

把字符串s写入fp所指向的输入流。写入成功,返回写入的字符;如果发生错误,则返回EOF。

也可以使用 int fprintf(FILE *fp,const char *format, ...) 函数来写把一个字符串写入到文件中。

4. 读取文件

(1)从文件中读取单个字符

int fgetc( FILE * fp );

返回值是读取的字符,如果错误,返回EOF。从fp所指向的输入流中读取一个字符。

(2)从fp所指向的输入流中读取n-1个字符

char *fgets( char *buf, int n, FILE *fp );

把读取的字符串复制到缓冲区buf,并在最后追加一个null字符来终止字符串。如果这个函数在读取最后一个字符之前就遇到一个换行符 ‘\n‘ 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。

也可以使用 int fscanf(FILE *fp, const char *format, ...) 函数来从文件中读取字符串,但是在遇到第一个空格字符时,它会停止读取。

原文地址:https://www.cnblogs.com/alyssayoung/p/9281832.html

时间: 2024-08-03 19:15:16

机试练习总结06:c语言输入&输出&文件读写的相关文章

Go语言下的文件读写操作

在Go语言中,文件是使用一个os.File类的对象指针表示的,也可以称这指针为文件句柄(filehandle),os.Stdin和os.Stdout也是属于这个*os.File类型的. 下面举例说明 package main import (     "bufio"     "fmt"     "io"     "os" ) func main() {     inputFile, inputError := os.Open(

【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年本人C语言笔试难点进行梳理,希望能对今年应届毕业生的应聘有所帮助. 2013年10月18日更新-->    攻破C语言这个帖子更新到这里,我不仅仅是为了补充大学学生遗漏的知识,我更重要的是希望通过我的经验,你们实际项目中的C语言写得漂亮,写出属于你的风格.“朱兆祺STM32手记”(http://bb

[华为机试]输入数字的汉语拼音,每个拼音的首字母大写。输出该数字的阿拉伯数字。

//输入数字的汉语拼音,每个拼音的首字母大写.输出该数字的阿拉伯数字. //JiuBaiJiuShiJiu -> 999 #include<stdio.h> #include<string.h> int result = 0; void add(int n,char wei[]) { if(strcmp(wei,"Wan") == 0) result = result + n * 10000; else if(strcmp(wei,"Qian&q

华为机试正式版(西安c/c++/java),今天下午去机试的题目,新鲜出炉了!

以下题目都是回忆的,题目都很简单, 大家有些基础就可以参加!(语言可以是c/c++,也可以是java的) 题目一(60分): 字符串操作, 将小写转换成大写, 将大写转化为小写, 数字的不做转换 例如, 输入:aBcD12 输出:AbCd12 题目二(100分): 将输入的字符串按照规定重新排序,如果字符串长度为奇数, 则中间的字符保持不变, 中间字符左侧降序排列, 右侧字符按照升序排列, 如果字符串长度为偶数,则左半侧字符降序排列,右半侧字符则按照升序排列 例如, 输入:ab5de 输出:ba

华为OJ机试训练(一)

题目1 -- 通过输入英文句子.将每一个单词反过来,标点符号顺序不变.非26个字母且非标点符号的情况就可以标识单词结束. 标点符号包含,.!? 比如输入:Hello, I need an apple. 输出: /** * 华为机试训练1: 通过输入英文句子,将每一个单词反过来.标点符号顺序不变.非26个字母且非标点符号的情况就可以标识单词结束. 标点符号包含,.!? * Hello, I need an apple. * * @author snail * */ public class Mai

[华为机试真题]66.单词搜索

题目 代码 /*--------------------------------------- * 日期:2015-07-06 * 作者:SJF0115 * 题目:WordSearch * 来源:华为机试真题 -----------------------------------------*/ #include <iostream> #include <string> #include <vector> #include <stack> #include

九度机试 题目1165:字符串匹配 2008年北京航空航天大学计算机研究生机试真题

题目1165:字符串匹配 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2497 解决:858 题目描述: 读入数据string[ ],然后读入一个短字符串.要求查找string[ ]中和短字符串的所有匹配,输出行号.匹配字符串.匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配.如"aa[123]bb",就是说aa1bb.aa2bb.aa3bb都算匹配. 输入: 输入有多组数据. 每组数据第一行输入n(1<=n<=1000),从第二行开始输入n个字符串(

华为机试ACM(字符组合问题)

今晚做了华为的机试,3道ACM题,最后一道是实现从M个不同字符中任取N个字符的所有组合. eg: input:ABC 2 output:AB AC BC 第一个输入为字符串,第二个输入为组合的字符个数,当N=0或者N>M时,输出“ERROR”. 思路:可以用递归的算法解决,例如ABC中2个字符的所有组合,先选取第一个的A,那包含A的2个字符的所有组合就是从后面剩余的BC中取1个字符的所有组合,然后选取第二个的B,那包含B的2个字符的所有组合就是从后面剩余的C中取1个字符的组合,即只有C,到选取第

2014年七月华为校招机试题目--最难的一道, 呵呵!

今天百无聊赖之时, 漫心看到14年的华为校招机试题目, 一共三道, 前两道皆是平平, 第三道却柳暗花明, 让人眼前一亮. 咋一看, 饶有趣味, 看似平淡无奇, 然而却玄机颇深(对我这种弱渣而言).(不过对于ACMer, 好像应该用基础算法, 就能解决!) (然而我也只会基础的算法!!忏愧的紧!!!).如果有幸被大神看到, 能指点我一两招, 不胜感激!  下面是题目和我的详细题解思路(可供巨巨一笑!嘿嘿!). 2014年七月华为校招机试题目: 第三题: 输入一个正整数X,在下面的等式左边的数字之间