高质量C编程04-输入输出
2016-05-12 17:53
316 查看
说明:以下所有下划线符号
(1)
(2)在控制字符串中添加一个或多个空白字符表示忽略空白字符录入
(3)scanf中的
①
②
结论:
结论:
(2)
(3)
(4)
注意:gets的缺陷:
gets当指定的空间不够存储要输入的字符串时没有任何拦截!(不会对字符串越界作检查)
(5)
优点:对越界进行检查,自动截断,最多存
缺点:会把
(6)
失败时:返回一个空指针NULL
(2)返回值
顺利关闭时:返回值为0
否则:返回
(3)判断
位移量为
(2)ftell()函数
作用:得到流式文件中的当前位置
引用:
(3)rewind()函数
作用:使位置指针重新返回文件的开头
到文件末尾时feof(fp)值为1,否则为0
buffer:一个指针,对于fread读入数据的存放地址,起始地址
size:要读取的字节数
count:要进行读取多少个size字节的数据项
fp:文件类型指针
buffer:对于fwrite,是输出数据的地址,起始地址
_均表示空格
一.控制台函数
1.scanf()函数
函数原型:int scanf("%_",&_);
(1)
scanf()函数接收输入数据时默认不采集空格,回车,跳格这些空白字符.但使用
%c读取数据时除外
(2)在控制字符串中添加一个或多个空白字符表示忽略空白字符录入
//例1 void main() { char ch1,ch2; scanf("%c%c",&ch1,&ch2); printf("*%c*%c*%c",ch1,ch2); } //输入:__ab //输出:*_*_*
//例2 void main() { char ch1,ch2; scanf("_%c_%c",&ch1,&ch2); printf("*%c*%c*%c",ch1,ch2); } //输入:__a__b //输出:*a*b*
(3)scanf中的
%[ ]格式控制符
①
%[指定可输入字符集]
②
%[^指定不可输入字符集]
//例1 void main() | void main() { | { char str[100]; | char str[100]; scanf("%[abcdef]",str); | scanf("%[^abcdef]",str); printf("%s\n",str); | printf("%s\n",str); } | } | //input:abczabc | //input:xyzaxyz //output:abc | //output:xyz
结论:
%[]格式输入非法字符则结束
//例2 void main() | void main() { | { char str[20]; | char str[20]; scanf("%s",str); | scanf("%[^\n]",str); printf("%s\n",str); | printf("%s\n",str); } | } | //input:abc_abc | //input:abc_abc //output:abc | //output:abc_abc
结论:
%s格式输入字符串到 _ 则结束
2.printf()函数
常用附加输出格式控制字符修饰符 | 含义 |
---|---|
m | 输出数据域宽,数据长度< m,左补空格,否则按实际输出 |
.n | 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 |
- | 输出数据在域内左对齐(缺省右对齐) |
0 | 输出数值时指定左边不实用空位置自动填0 |
# | 在八进制和十六进制数前显示0/0x |
3.其他输入输出函数
(1)putchar('A');
(2)
ch = getchar();
(3)
puts("string");
(4)
gets(str);
注意:gets的缺陷:
gets当指定的空间不够存储要输入的字符串时没有任何拦截!(不会对字符串越界作检查)
(5)
fgets(buff,sizeof(buff),stdin);//stdin标准输入
优点:对越界进行检查,自动截断,最多存
sizeof(buff)-1个
缺点:会把
\n存入,
buff[strlen(buff)-1]=0清除
\n
(6)
fputs(buff,stdout);//stdout标准输出
4.转义字符及其作用
字符形式 | 含义 |
---|---|
\r | 回车,将当前位置移到本行开头 |
\b | 退格,将当前位置移到前一列 |
\t | 水平制表,跳到下一个tab位置 |
\f | 换页,将当前位置移到下页开头 |
\n | 换行 |
二.文件操作函数
1.VC++6.0中FILE结构体
C语言中,每个被使用的文件都在内存中开辟一块内存,用来存放文件的有关信息.这些信息都保存在一个结构体变量中.struct _iobuf { char *_ptr;//pointer to next character position int _cnt;//number of characters left in buffer char *_base;//pointer to start of buffer int _flag; int _file; int _charbuf; int _bufsize;//size of buffer being used char *_tmpfname; } typedef struct -iobuf FILE;
2.文件打开函数-fopen()
(1)调用方式:
FILE *fp; fp = fopen("文件名","使用文件方式");
(2)返回值
成功时:返回指明流的指针失败时:返回一个空指针NULL
(3)使用后应判断返回值是否为NULL
if (NULL == (fp = fopen("file","r"))) { printf("can not open this file\n"); exit(0);//关闭所有文件(stdlib.h) }
3.文件关闭函数-fclose()
(1)调用方式
fclose(fp)
(2)返回值
顺利关闭时:返回值为0
否则:返回
EoF(-1)
(3)判断
ferror(fp)
4.文件定位函数
(1)fseek()函数fseek(文件类型指针,位移量,起始点)
起始点 | 名字 | 用数字代表 |
---|---|---|
文件开始 | SEEK_SET | 0 |
文件当前位置 | SEEK_CUR | 1 |
文件末尾 | SEEK_END | 2 |
long型数据,通常在数字末尾加
L,就表示
long型
(2)ftell()函数
ftell(fp)
作用:得到流式文件中的当前位置
引用:
i = ftell(fp); if (i == -1L) printf("error\n");
(3)rewind()函数
rewind(fp)
作用:使位置指针重新返回文件的开头
5.文件末尾判断函数-feof()
feof(fp)
到文件末尾时feof(fp)值为1,否则为0
6.文件读取函数-fread()
(1)函数原型
fread(buffer,size,count,fp);
buffer:一个指针,对于fread读入数据的存放地址,起始地址
size:要读取的字节数
count:要进行读取多少个size字节的数据项
fp:文件类型指针
(2)返回值
调用成功,函数返回值为count7.文件写入函数-fwrite()
(2)函数原型
fwrite(buffer,size,count,fp);
buffer:对于fwrite,是输出数据的地址,起始地址
相关文章推荐
- java实现用*号打出等腰三角形与等边三角形
- myeclipse 没有任何问题,可偏偏还报这错。
- C#实现自动升级(附源码)
- Spring知识点提炼
- Spring知识点提炼
- spring注解完整版
- 用java实现找出1-100之间的质数(两种方法)
- JAVA相关的视频学习视频,内容较多
- Python3发送post请求,自动记住cookie
- 图(Graph)的常用代码集合
- Java堆内存
- 【python】python中的字符串及其格式化
- c语言文件操作
- 【面向代码】学习 Deep Learning(二)Deep Belief Nets(DBNs)
- 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3
- java冒泡排序法与选择排序法
- GEEK编程练习— —最长连续序列
- Java 值传递和对象传递详解
- springmvc参数绑定常用注解
- WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类