fgetc,fputc/fclose,fopen
#include <stdio.h> #include <stdlib.h> //int fclose 0 -1/EOF //File* fopen NULL //fputc('',fp) EOF/-1 char //fgetc EOF int main() { FILE *fp;//r+对文本又读又写 fp= fopen("file.txt","r+"); if(fp==NULL){ //定位失败原因 perror("fopen"); return -1; } //ptr,注意优先级的问题 char c; while((c=fgetc(fp))!=EOF){ printf("%c",c); } c= fputc('H',fp); if(-1==c){ perror("fput"); } fclose(fp); return 0; }
fread,fwrite(仅它们可操作数据类型)/fgets,fputs(row,str)
int main() { char buf[20]="hello\nworld"; FILE *fp; fp= fopen("file.txt","r+"); if(fp==NULL){ perror("fopen"); return -1; } int ret; ret= fwrite(buf,sizeof(char), strlen(buf),fp); ret=fread(buf,sizeof(char),sizeof(buf),fp); printf("%d",ret); fclose(fp); return 0; }
//ret= fwrite(&i,sizeof(int),1,fp);
i=0; fread(&i,sizeof(int),1,fp); printf("i=%d",i);
乱码用程序来看
r+二进制模式可以有多种结构
fgets()
char buf[20]= {0}; FILE *fp; // int i=123456; fp= fopen("file.txt","r+"); if(fp==NULL){ perror("fopen"); return -1; } while ((fgets(buf,sizeof(buf),fp))!=NULL){ //每次读一行文件结尾是Null printf("%s",buf); } fputs()//fwrite可替代
(fgets(buf,sizeof(buf),stdin)//在读标准输入,fgets会读换行符,而gets不会