学习总结

1、文件函数原型1:

FILE* fopen(char *filename, char *openmode);  //打开文件,返回文件指针

filename:文件名,更确切地说,是包含文件名的字符串地址;

openmode:打开模式(r,w,a,r+,w+,a+,……

打开失败返回NULL

int getc(FILE *fp);  //读文件,返回字符

fp:读取文件指针

int putc(int ch, FILE *fp);  //写文件,返回写入字符的ASCII

ch:字符

fp:写入文件指针

 

int fclose(FILE *fp);  //关闭文件,返回写入0则代表成功

fp:关闭文件指针

例子:

 #include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int ch;
FILE *fp; if(argc != )
{
printf("error params!\n");
exit();
} fp = fopen(argv[],"r"); if(fp == NULL)
{
printf("can not open file!\n");
exit();
} while((ch = getc(fp)) != EOF)
{
putc(ch,stdout);
} if(fclose(fp) != ){
printf("file close error!");
}else{
printf("read file over!\n");
} return ;
}

2、文件函数原型2:

int printf( const char *format , [,argument,...]);  //格式化输出,返回输出字符个数

*format:字符常指针

:变长变量

int scanf(char *format[,argument,...]);  //格式化输入,返回成功赋值的数据项数

*format:字符常指针

[,argument,...]:变长变量

读到文件末尾出错时则返回EOF

 

int fprintf(FILE *fp, const char *format , [,argument,...]);  //格式化输出,返回输出字符个数

fp:输出到目标文件的文件指针

*format:字符常指针

[,argument,...]:变长变量

与printf的区别缺少指定目标文件指针,printf默认输出到stdout

 

int fscanf(FILE *fp , char *format[,argument,...]);  //格式化输入,返回成功赋值的数据项数

fp:输入来源的文件指针

*format:字符常指针

[,argument,...]:变长变量

与scanf的区别缺少指定目标文件指针,scanf默认从stdin获取数据来源

 

例子:

 #include <stdio.h>
#include <string.h>
#define LEN 40 int main(int argc, char *argv[])
{
char str[LEN]; fscanf(stdin, "%s", str);
while(strcmp(str,"quit") != )
{
fprintf(stdout, "%s\n", str);
fscanf(stdin, "%s", str);
} return ;
}

3、文件函数原型3:

char *gets( char *buf );  //字符串标准输入,返回字符串指针,遇到回车则结束输入

buf:存储输入地址

与scanf字符串区别:scanf遇到空格、回车和Tab键都会认为输入结束; gets遇到回车认为输入结束。

 

例子:

 #include<stdio.h>
#define MAXLINE 10
int main()
{
char str1[MAXLINE];
char str2[MAXLINE]; gets(str1);
printf("%s\n",str1); scanf("%s",str2);
printf("%s\n",str2); return ;
}

执行结果:

abc def

abc def

abc def

abc

int puts(char *buf);  //字符串标准输出,遇到‘\0’则停止输出,执行成功返回输出的字节数,执行失败返回EOF

buf:输出字符串

与printf字符区别:输出到字符串最后,puts会自动补’\n’,而printf不会

 

例子:

 #include<stdio.h>
int main()
{
char string[] = {'a','b','c','d','\n','e','f','\0','g',’h’};
int a,b;
a=puts(string);
b=printf("%s",string);
printf("\nputs retrun %d,printf return %d\n",a,b);
return ;
}

执行结果:

abcd

ef

abcd

ef

puts retrun 8,printf return 7

char *fgets( char *buf, int max, char *fp);  //字符串标准输入,返回字符串指针,遇到换行符(包括换行符也读取)或比读取到最大长度少一个字符(因为会向字符串后添加‘\0’)或读取到文件最后则结束输入

buf:存储输入地址

max:输入字符串最大数

fp:输入文件指针

 

例子:

 #include<stdio.h>
#include<stdlib.h>
#define MAXLINE 10
int main()
{
char line[MAXLINE];
FILE *fp;
int c=; fp = fopen("abc","r"); if(fp == NULL)
{
printf("open file error!\n");
exit();
} while(fgets(line,MAXLINE,fp) != NULL)
{
fputs(line,stdout);
printf("/");
c++;
}
printf("%d\n",c);
return ;
}

执行结果:

cat abc

1234567890

1234567891234567891234567

000

./test

123456789/0

/123456789/123456789/1234567

/

/000

/7

int fputs(char *buf, FILE *fp);  //字符串文件输出,遇到‘\0’则停止输出,执行成功返回输出的字节数,执行失败返回EOF

buf:输出字符串

fp:输入文件指针

与puts区别:fputs不会添加换行符

 

例子:

 #include <stdio.h>
int main()
{
char *str="abcdef g\n";
fputs(str,stdout);
return ;
}

执行结果:

abcdef g

【C语言学习】《C Primer Plus》第13章 文件输入/输出的更多相关文章

  1. 第 13 章 文件输入/输出 (标准I/O)

    /*-------------------------- count.c -- 使用标准 I/O --------------------------*/ #include <stdio.h&g ...

  2. 《C语言程序设计现代方法》第3章 格式化输入/输出

    完整的细节将留到第22章中介绍. 调用printf函数一次可以打印的值的个数没有限制. 注意:C语言编译器不会检查格式串中转换说明的数量是否和输出项的数量相互匹配,也不会检查转换说明是否适合要显示项的 ...

  3. [转]C语言文件输入/输出ACM改进版(freopen函数)

    C语言文件输入/输出ACM改进版(freopen函数) 2009年5月27日 10:379,457 浏览数发表评论阅读评论   文章作者:姜南(Slyar) 文章来源:Slyar Home (www. ...

  4. C++ Primer Plus 文章17章 进,输出和文件

    文章17章 进.输出和文件 1.当到达输入句子.他将刷新输出缓冲区满输出电流 2.streambuf分类 它提供了用于各种操作的一个缓冲 ios_base类表示流的一般特征 ios基础的类ios_ba ...

  5. c语言学习之基础知识点介绍(一):输出语句和变量简单介绍

    本系列是为了学习ios做准备的,也能作为c语言入门的教程看看. c语言的程序结构: 1.顺序结构:自上而下依次执行. 2.分支结构:程序有选择的执行某段代码或者不执行某段代码. 3.循环结构:程序循环 ...

  6. C Primer Plus学习笔记(三)- 字符串和格式化输入/输出

    从一个简单的例子开始 #include <stdio.h> int main() { char name[10]; printf("Input Your Name:\n" ...

  7. Go语言学习之7 接口实例、终端文件读写、异常处理

    本节主要内容: 1. 终端读写2. 文件读写3. 命令行参数4. Json5. 自定义错误 1. 终端读写 操作终端相关文件句柄常量    os.Stdin:标准输入    os.Stdout:标准输 ...

  8. C++ Primer 5th 第13章 拷贝控制

    当一个对象的引用或者指针离开作用域时,析构函数不会执行. 构造函数有初始化部分(初始化列表)和函数体. 析构函数有析构部分和函数,但析构函数的析构部分是隐式的.

  9. 第13章 GPIO输入—按键检测

    本章参考资料:<STM32F76xxx参考手册>.库帮助文档<STM32F779xx_User_Manual.chm>. 按键检测使用到GPIO外设的基本输入功能,本章中不再赘 ...

随机推荐

  1. POJ 3281 Dining 最大流

    饮料->牛->食物. 牛拆成两点. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include ...

  2. mysql主从不一致解决方法

    方法一:忽略错误后,继续同步 该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况 stop slave; #表示跳过一步错误,后面的数字可变 set global ...

  3. 常见sizeof 笔试题

    最近面试过程中遇到了很多很多sizeof的问题. 现在总结一下: #include <stdio.h> #include <string.h> void fun(int arr ...

  4. Linux网络栈下两层实现

    http://www.cnblogs.com/zmkeil/archive/2013/04/18/3029339.html 1.1简介 VLAN是网络栈的一个附加功能,且位于下两层.首先来学习Linu ...

  5. webform的页面缓存

    给页面添加<%@ OutputCache Duration="10" VaryByParam="*"%>标签就可以启用页面缓存. Duration表 ...

  6. 微信小程序0.11.122100版本新功能解析

    微信小程序0.11.122100版本新功能解析   新版本就不再吐槽了,整的自己跟个愤青似的.人老了,喷不动了,把机会留给年轻人吧.下午随着新版本开放,微信居然破天荒的开放了开发者论坛.我很是担心官方 ...

  7. win10U盘 安装

    转载自网络: 首先,现在WIN10镜像文件 1.地址和具体信息如下: 下载提示:请用迅雷等支持P2P的下载工具下载 Win10 TH2正式版微软官方原版ISO系统镜像下载(2016年4月更新版): W ...

  8. 安装完ODAC,出现ORA-12560:TNS:协议适配器错误 12541 无监听程序的解决

    进入系统环境变量设置,查看Path路径,发现D:\oracle\product\11.2.0\client_1等路径放到了oracle11g数据库路径前面,将新加入的路径置后即可解决ORA-12560 ...

  9. C# 获取屏幕的大小

    原文地址:http://www.cnblogs.com/zp89850/archive/2011/08/23/2151052.html C# 获取屏幕的大小 WinForm: int iActulaW ...

  10. 易学PHP——WAMP环境搭建

    安装前的准备 查看本机的类型(x86/x64,即 32 位还是 64 位) 安装好 VC9/VC11/VC14 运行库(需要按照本机的类型选择安装) 创建好一个安装路径用于安装整套 amp 环境(我使 ...