您的位置:首页 > 编程语言

高质量C编程04-输入输出

2016-05-12 17:53 316 查看
说明:以下所有下划线符号
_
均表示空格

一.控制台函数

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_SET0
文件当前位置SEEK_CUR1
文件末尾SEEK_END2
位移量为
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)返回值

调用成功,函数返回值为count

7.文件写入函数-fwrite()

(2)函数原型

fwrite(buffer,size,count,fp);


buffer:对于fwrite,是输出数据的地址,起始地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: