文件类型
1. 文本文件
2. 二进制文件
区别文本文件是以ascll码形式存储的
内存是以二进制样存储的
文件打开和关闭
Fopen()
形式
File *fp;
Fp=fopen(“文件名”,“大开方式”);
Fopen()
检查操作是否成功
若该该函数值返回值为0,就说明文件打开失败,若打开成功则返回非0值就说明文件打开成功(NULL=0)
Fclose()
形式
Fclose(fp)
若关闭成功返回值为0若失败则为-1.
文件结束检查--------feof()函数
形式
Feof(文件指针)
到结尾为返回值1如果没到结尾为返回值0
应用一般形式
If(!Feof(fp))
{
C=fgetc(fp);
}
返回值为0就继续运行。
返回值为1就结束。
文件的顺序读写
1.字符输入和输出函数(fgetc、fputc)(文本文件)(区别文本文件是以ascll码形式存储的
)
2.字符串输入和输出函数(fgets、fputs)(文本文件)(区别文本文件是以ascll码形式存储的
)
3.格式化输入输出函数(fscanf、fprintf)(文本文件)(注意:输入时要将ascii码转换为二进制形式,在输出时要将二进制形式转换成字符)
4.数据块输入输出函数(freed、fwrite)
1使用方法
Fgetc()
形式
Char ch;
Ch=fgetc(文件指针)
函数结尾标志EOF或-1。
在这就是ascll码的值赋给变量ch
例子
Ch=fgetc(fp)
While(ch!=EOF)
{
Putchar(ch);
Ch=fgetc(fp);
}
Fputc(字符,文件指针);
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp1,*fp2;
char c;
if((fp1=fopen("","w"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
printf("输入字符\n");
while((c=getchar())!='\n') while()语句后面假如没有花括号,往后读一句。
fputc(c,fp1);
fclose(fp1);
if((fp2=fopen("","r"))==NULL)
{
printf("不能打开文件\n");
exit(0);
}
printf("输出字符\n");
while((c=fgetc(fp2))!=EOF)
putchar(c);
printf("\n");
fclose(fp2);
}
2Fgets()
Fgets(字符串指针,字符个数n,文件指针);
若函数调用成功则返回字符串的首地址,若读到文件结尾处或调用失败,则返回常量NU7LL;
字符串输出
Fputs(字符串,文件指针)
格式输入
Fprintf(文件指针,格式串,输出项表);
执行成功则返回字节数;否者返回复数;
二进制文件的输入和输出----------数据块读写
Fwrilte(buf,size,count,文件指针)
Fread(buf,size,count,文件指针)
如有一个整数10000 用ASCII码形式输出与字符一一对应,一个字节代表一个字符
存储形式为
00110001--00110000--00110000--00110000--00110000
1 0 0 0 0
1表示的是字符“1”,其ASCII码为49(D),也就是110001(B)
存储形式为
00110001--00110000--00110000--00110000--00110000
1 0 0 0 0
1表示的是字符“1”,其ASCII码为49(D),也就是110001(B)
0表示的是字符“0”,其ASCII码为48(D),也就是110000(B)
所以10000用二进制表示的话是:10011100010000
用ASCII码表示的话是:00110001--00110000--00110000--00110000--00110000
所以10000用二进制表示的话是:10011100010000
用ASCII码表示的话是:00110001--00110000--00110000--00110000--00110000
二进制是一种非常古老的进位制,由于在现代被用于电子计算机中,而旧貌换新颜变得身价倍增起来。
在现实生活和记数器中,如果表示数的“器件”只有两种状态,如电灯的“亮”与“灭”,开关的“开”与“关”。一种状态表示数码0,另一种状态表示数码1,1加1应该等于2,因为没有数码2,只能向上一个数位进一,就是采用“满二进一”的原则,这和十进制是采用“满十进一”原则完全相同。
1+1=10,10+1=11,11+1=100,100+1=101,
101+1=110,110+1=111,111+1+=1000,……,
在现实生活和记数器中,如果表示数的“器件”只有两种状态,如电灯的“亮”与“灭”,开关的“开”与“关”。一种状态表示数码0,另一种状态表示数码1,1加1应该等于2,因为没有数码2,只能向上一个数位进一,就是采用“满二进一”的原则,这和十进制是采用“满十进一”原则完全相同。
1+1=10,10+1=11,11+1=100,100+1=101,
101+1=110,110+1=111,111+1+=1000,……,
可见二进制的10表示二,100表示四,1000表示八,10000表示十六,……。
二进制同样是“位值制”。同一个数码1,在不同数位上表示的数值是不同的。如11111,从右往左数,第一位的1就是一,第二位的1表示二,第三位的1表示四,第四位的1表示八,第五位的1表示十六。用大家熟悉的十进制说明这个二进制数的含意,有以下关系式
(11111)(二进制)=1×24+1×23+1×22+1×2+1(十进制)
一个二进制整数,从右边第一位起,各位的计数单位分别是1,2,22,23,…,2n,…。fgets和fgetc的区别
计算机内部之所以采用二进制,其主要原因是二进制具有以下优点:
(1)技术上容易实现。用双稳态电路表示二进制数字0和1是很容易的事情。
(2)可靠性高。二进制中只使用0和1两个数字,传输和处理时不易出错,因而可以保障计算机具有很高的可靠性。
(3)运算规则简单。与十进制数相比,二进制数的运算规则要简单得多,这不仅可以使运算
二进制同样是“位值制”。同一个数码1,在不同数位上表示的数值是不同的。如11111,从右往左数,第一位的1就是一,第二位的1表示二,第三位的1表示四,第四位的1表示八,第五位的1表示十六。用大家熟悉的十进制说明这个二进制数的含意,有以下关系式
(11111)(二进制)=1×24+1×23+1×22+1×2+1(十进制)
一个二进制整数,从右边第一位起,各位的计数单位分别是1,2,22,23,…,2n,…。fgets和fgetc的区别
计算机内部之所以采用二进制,其主要原因是二进制具有以下优点:
(1)技术上容易实现。用双稳态电路表示二进制数字0和1是很容易的事情。
(2)可靠性高。二进制中只使用0和1两个数字,传输和处理时不易出错,因而可以保障计算机具有很高的可靠性。
(3)运算规则简单。与十进制数相比,二进制数的运算规则要简单得多,这不仅可以使运算
器的结构得到简化,而且有利于提高运算速度。
(4)与逻辑量相吻合。二进制数0和1正好与逻辑量“真”和“假”相对应,因此用二进制数表示二值逻辑显得十分自然。
(5)二进制数与十进制数之间的转换相当容易。人们使用计算机时可以仍然使用自己所习惯的十进制数,而计算机将其自动转换成二进制数存储和处理,输出处理结果时又将二进制数自动转换成十进制数,这给工作带来极大的方便。
(4)与逻辑量相吻合。二进制数0和1正好与逻辑量“真”和“假”相对应,因此用二进制数表示二值逻辑显得十分自然。
(5)二进制数与十进制数之间的转换相当容易。人们使用计算机时可以仍然使用自己所习惯的十进制数,而计算机将其自动转换成二进制数存储和处理,输出处理结果时又将二进制数自动转换成十进制数,这给工作带来极大的方便。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论