a1>打开文件 FILE 是一个文件结构体数据类型
FILE *fp * 指针 文件指针变量 // FILE代表指针指向一个文件
FILE *fp =fopen(“”,“w”)
第一个参数是传文件的路径
第二个参数是打开文件的方式 r:读 w:写 a:追加
如果文件打开失败,这个fopen的返回值是NULL,否则返回的是文件的地址
if(fp==NULL)
{
//打印文件打开失败的原因
perror("fopen failes:");
return 0;
}
文件打开是失败原因
1)如果是以只读的方式打开,然而打开的文件不存在
2)cpu内存已满
如果以w的方式打开,文件不存在时会新建,如果文件存在,对这个文件内容进行格式化之后在进行写操作
2>对文件进行相关操作
fputc(‘a',fp); //字符写入函数
字符串输入到文件
char str[10]="hello";
fputs(str,fp);
fclose(fp);
从文件读出一行字符串,如果没有换行,就全读
char str[10];
fgets(str,sizeof(str),fp);
printf("str=%s",str);
fclose(fp);
读文件
FILE *fp=
char ch=fgetc(fp);
格式化输入到文件函数
fprintf(fp,"a=%d,b=%c\n",a,'c');
fclose(fp);
int test;
int ch;
fscanf(fp,"a=%d,b=%c\n",&test,&ch);
3>关闭文件
fclose(fp);
fwrite(&a,sizeof(int),1,fp);
1>FILE *fp
fread(&a,sizeof(int),1,fp);
printf("a=%d\n",a);
结构体变量读写
typedef struct Student
{
}
fseek(fp,1,SEEK_SET)
第二个参数相当于 位置
将p指针移动到具体位置
第三个参数
SEEK_SET 文件头
SEEK CUR p 指针的当前位置
SEEK END 文件尾
第二个参数
根据第三个餐胡决定,
如果SEEL_SET 用正数
如果是SEEK_CUR 可以是正数也可以是负数
如果是SEEK_END 一般是负数
宏定义
//define 实际上就是字符串的替换
define COUNT 10
printf();
格式
1>带宏体的宏
define 宏名 宏体
2>不带宏体的宏
define 宏名
3>不带参数的宏函数
define COUNT printf(“hello\n”);
4>带参的宏函数
define max (a,b) a>b?a:b;
5> define的扩展
#define get(type,fynctionName)\
type get##functionName(type a,type b)\
{\
return a>b?a:b;\
}
get(int,IntMax)
get(float,FloatMax)
链表