10-21 文件

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)

链表

你可能感兴趣的