存储
2016-10-21 本文已影响0人
ie大博
i# 存储
- c语言存储主要分两种方式:文本文件,二进制。
- 二进制:视频,mp3,程序
- 记事本
存储步骤
(1)打开文件
- 打开文件FILE. 。。FILE是一个文件结构体的数据类型就像int,只不过是一个类型。
- FILE*fp代表一个文件指针变量,FILE :代表这个指针指向一个文件。
- fopen(),第一个参数是传文件路径。第二个参数是指打开文件的方式。
r:读的方式
w:写的方式:如果这个文件不存在,会新建一个文件。。如果这个文件存在,就会把原来的内容删除,然后再写。
a:追加的方式
如果文件打开失败,fopen的返回值是NULL。否则就是文件的地址。如果文件打开失败,可以用perror(“打开失败的原因”)查出原因。
打开失败的原因
- 如果是以只读的方式打开,然而打开的文件不存在。
- 内存已满。
(2)对文件操作
(3)关闭保存文件
#include<stdio.h>
#include<string.h>
/*int main()
{
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");//w表示写入
if(fp==NULL)
{
perror("fopen failed:");
return 0;
}
fputc('a',fp);///输入字符a
fclose(fp);
return 0;
}*/
/*int main()
{
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");//r表示可读
if(fp==NULL)
{
perror("fopen failed:");
return 0;
}
char ch=fgetc(fp);///读取字符
printf("ch=%c\n",ch);
fclose(fp);
}*/
/*int main()
{
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");
if(fp==NULL)
{
perror("fopen failed:");
return 0;
}
fprintf(fp,"a=%d,b=%c\n",2,'c');///向文件输入
fclose(fp);
}*/
/*int main()
{
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");
if(fp==NULL)
{
perror("fopen failed:");
return 0;
}
int value;
char ch;
fscanf(fp,"a=%d,b=%c\n",&value,&ch);///从文件输出
printf("value=%d,ch=%c\n",value,ch);
fclose(fp);
}*/
/*int main()
{
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");
if(fp==NULL)
{
perror("fopen failed:");
return 0;
}
char arr[10]="hello";
fputs(arr,fp);///输入字符串
fclose(fp);
return 0;
}*/
int main()
{
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");
if(fp==NULL)
{
perror("fopen failed:");
return 0;
}
// char arr[10]="hello";
char str[10];
fgets(str,sizeof(str),fp);///调出字符串,但是如果字符串里面有\n,那么就会停止调出。
printf("str=%s\n",str);
fclose(fp);
return 0;
}
int main()
{
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");
int a = 8 ;
fwrite(&a,sizeof(int),1,fp);////用二进制写函数。
fclose(fp);
return 0;
}
/*int main()
{
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");
int a ;
fread(&a,sizeof(int),1,fp);////读取内容
printf("a=%d\n",a);
fclose(fp);
return 0;
}*/
typedef struct student////如何写进去一个结构体
{
char name[20];
int num;
}student;
/*int main()
{
student stu={"hello",22};
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","w");
fwrite(&stu,sizeof(stu),1,fp);这个位置和其他是不一样的,记住就可以 了
fclose(fp);
return 0;
}*/
int main()
{
student stu;
FILE *fp=fopen("/home/alex/1612.c/language.c/1021/1.txt","r");
fread(&stu,sizeof(stu),1,fp);
printf("stu.name=%s\nstu.num=%d\n",stu.name,stu.num);
fclose(fp);
return 0;
}
fseek_SET:移动指针,从头开始,正数
fseek_CUR:从——p开始,正数或者负数
fseek_END:从文件尾,负数
ftell:显示指针位置