文件输入/输出
fopen:打开文件.第一个参数文件名的字符串地址。打开模式:r:读 w:写,会改 没有就创建 a:追加 ,没有就创建 r+:读取和写入 w+:同上但会改 没有就创建
a+:同上,但是追加 rb,wb,ab,ab+,a+b,wb+,w+b,ab+,a+b,使用二进制模式而不是文本模式打开,其他类似
getc():到达文件结尾时,会返回EOF putc() 与getchar()、putchar类似但适用于文件 putc(ch,文件指针)
fclose 关闭由指针fp指定的文件
#include<stdio.h>
int main()
{
int ch;
FILE * fp;
fp = fopen("49.c","r");
while((ch = getc(fp)!=EOF))
putchar(ch);
fclose(fp);
}
//要指定文件的属性
#include<stdio.h>
#include<stdlib.h>//exit()
#include<string.h>
#define LEN 40
int main(int argc,char *argv[])
{
FILE *in,*out;
int ch;
char name[LEN];
int count = 0;
if(argc < 2)
{
fprintf(stderr,"error!");
exit(1);
}
if((in = fopen(argv[1],"r")) ==NULL)
{
fprintf(stderr,"ERROR!");
exit(2);
}
strcpy(name,argv[1]);
strcat(name,".red");
if((out = fopen(name,"w")) == NULL)
{
fprintf(stderr,"ERROR1");
exit(3);
}
while((ch = getc(in)) != EOF)
if(count++ % 3 == 0)
putc(ch,out);
if(fclose(in) != 0 || fclose(out) != 0)
fprintf(stderr,"ERROR2");
return 0;
}
文件I/O:fprintf(),fscanf(),fgets(),fputs();
fgets()第一个参数与gets相同,存储输入的地址,第二个输入字符串的最大长度,第三个指向要读取的文件,自动在最大数目达到前加‘\0’,所以读取MAX-1个字符
----最大数目前读完,在‘\0’前加个‘\n’
fputs()不会添加换行符 stdin,stdout键盘输入和输出
fseek()在打开的文件中直接移动到任意字符处
ftell()返回文件的当前位置
fgetpos() fsetpos 文件比较大时用
ungetc()放回字符
fflush()刷新缓存区
setvbuf()建立一个供标准I/O文件使用的替换缓存区
二进制I/O:fread()和fwrite()修正了数字保存到文件中,fprintf()存的时候会把它变为字符串存储,1/3变为了0.333333
feof()检测到文件结尾返回非零值,ferror()读写错误,返回一个非零值