位运算
按位取反 ~
左移 <<,原有数值*2
右移 >>,数值/2
按位与 &,1&1= 1,1&1=0,0&0= 0,有0为0
按位异或 ^,异为1
按位或 |,1|1 = 1,1|0 = 1,0|0 = 0,有1为1
//位运算只能为整型和字符型
文件
文件指针是程序中用FILE定义的指针变量
一.文件管理两种方式
1.二进制文件
2.文本文件
二.文件指针
结构体类型指针
只能存放结构体类型的地址
FILE * 指针变量名
FILE *fp1,*fp2;
1.打开文件
FILE *fp;
fp = fopen("file_a","r");
2.文件打开方式
r 只读
w 只写,无,建文件,有,则覆盖文件
a 增添数据
rb 只读二进制文件
wb 只写二级制文件
ab 二级制文件增添数据
r+ 读写文本文件
w+ 读写,建立文本文件
a+ 读写文本文件
rb+ 读写二级制文件
wb+ 读写,建立二级制文件
ab+ 读写二级制文件
3.关闭文件
FILE *fp;
fp = fopen("file_a","r");
fclose(fp);
【例子1】文件写入
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
FILE *fp;
char ch,filename[10];
scanf("%s",filename);
if((fp = fopen(filename,"w")) == NULL)//如果磁盘已满,则打印不能打开文件,并结束程序
{
printf("cannnot open file\n");
exit(0);//结束程序
}
ch = getchar();接收scanf语句,回车
ch = getchar();输入第一个字符
while(ch!='#'{fputc(ch,fp);.//考试要点,字符和文件
putchar(ch);//输出文件
ch = getchar();
}
fclose(fp);//结束文件
}
【例子2】文件读取
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
FILE *fp;
char ch;
if((fp = fopen(filename,"w")) == NULL)//如果磁盘已满,则打印不能打开文件,并结束程序
{
printf("cannnot open file\n");
exit(0);//结束程序
}
ch = getchar(fp);
while(ch!=EOF//当输入#时,结束循环
{
putchar(ch);//输出文件
ch = getchar(fp);
}
fclose(fp);//结束文件
}
4.判断文件结束feof
FILE *fp;
feof(fp);
文件结束返回值为非0,否则0;
5.fprintf()和fscanf()函数
fprintf(文件指针,格式字符串,输出列);
fscanf(文件指针,格式字符串,输出列);
功能
磁盘文件读入或输出字符
fprintf(fp,"5d",i,t);
fscanf(fp,"%d",&i,&t);
6.fgets()和fputs()函数
fgets(str,n,fp);
从fp文件找出n-1个字符,输入到str中
返回值为str的首地址
fputs("china",fp);
在fp文件输入China
返回值为,反之为EOF
7.fread和fwrite函数
fread(buffer,size,cout,fp);
buffer为内存首地址,数据块指针
输入的数据存入此数据块中
fwrite(buffer,size,cout,fp);//fp和fwrite考点
8.文件定位
rewind(fp);//回到文件开头
fseek(pf,offset,origin);//偏移量
ftell(fp);获取指针当前位置