fopen成功返回文件指针,失败返回null
fopen_s成功返回0,失败返回非0,并且参数加上&fp
fscanf用于拿出文件里的数据,即读取,参数相较scanf多了fp流
fscanf_s需要最后指定size,和scanf_s一样多了长度的制定(fp,format,size);
fprint用于往文件中写入内容(fp,format);
把format里面“”里的直接写在了后面
对于字符
向流输出:fputc(int,fp)//
用写和读写会清楚原有内容,从开始开始
用追加才是从末开始保留原有
不存在则会创建
putchar(int)错误返回eof,正确返回字符
先用两个getchar然后while(ch!=eof),fputc(ch,fp),getchar,循环。实现写入
输入函数,从文件中读取
int fgetc(fp) int getchar()
ch = fgetc(fp);
while(ch!=eof) //while(ch=getc(fp)!=eof)//末尾返回EOF
putchar(ch);
ch=fgetc(fp)
//while(ch!=eof) chrl+z
ch=fgtc(fp)
putchar(ch)
这样来进行读取
fputs(“something”,fp)//没有f不需要fp
错误返回rof,否则返回非负数
fgets(str,sizeof(str),fp)//可以避免scanf的空格
逐个读入字符,直到遇到换行符或者读了size-1个
fread和fwrite用于大的数据块
fwrite(a,sizeof(a【0】),sizeof(a)/sizeof(a【0】),fp)
fread类似,第三个为读入几次,用于结构体特别有用//从流读入数组,循环
先用循环fread写入,再正常的printf
fwrite(&stu【i】,sizeof(struct student-type),1,fp)
循环
fseeek则是找位置
#include <stdio.h>
#include <stdlib.h>int main()
{
FILE *fin;
int a[20];
char filename[] = "E:\\sort.txt";
fin = fopen( filename, "r+");
if (fin==NULL) {
printf("read_file(): 打开文件%s失败!\n", filename);
exit(0);
}
else {
printf("read_file(): 成功打开文件%s!\n", filename);
}
int i = 0;
for (i = 0; i < 9; i++) {
fscanf(fin, "%d", &a[i]);//将文件内的写入数组
}
for (i = 0; i < 9 ; i++) {
printf("%d\t", a[i]);
}
fclose(fin);
printf("Hello world!\n");
return 0;
}