fopen函数:
头文件:stdio.h
功能:文件已存在则直接打开,不存在则创建。
函数声明:FILE *fopen(const char *pathname, const char *mode);
参数:
pathname:文件名
mode:文件访问权限。
返回值:成功返回指向文件的指针。
失败返回NULL;
include <stdio.h>
int main()
{
FILE *fp = fopen("1.txt","w");
if(fp == NULL)
{
printf("open error");
return 1;
}
return 0
}
fputc函数:
头文件:stdio.h
功能:向文件中写入字符。
函数声明:int putc(int c, FILE *stream)
参数:
c:要向文件中写入的字符
*stream:指向文件的指针
int:成功返回字符对应的ASCII值,失败或完成写入返回EOF;
向文件中写入hello:
#include <stdio.h>
int main()
{
FILE *fp = fopen("1.txt","w");
if(fp == NULL)
{
printf("open error");
return 1;
}
int ret = fputc('h',fp);
if (ret == -1)
{
printf("puts error");
return 1;
}
fputc('e',fp);
fputc('l',fp);
fputc('l',fp);
fputc('o',fp);
fclose(fp);
return 0;
}
fgetc函数:
头文件:stdio.h
功能:从文件中读取字符
函数声明: int fgetc(FILE *stream);
*stream:指向文件的指针
int:成功返回字符对应的ASCII值,失败或完成写入返回EOF;
用fgetc和fputc实现cp功能:
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc<3)
{
printf("usage:./a.out srcfile dstfile\n");
return 1;
}
FILE *src = fopen(argv[1],"r");
FILE * dst= fopen(argv[2],"w");
if(NULL == src || NULL == dst )
{
printf("fopen error\n");
return 1;
}
while(1)
{
int c = fgetc(src);
if(EOF== c)
{
break;
}
fputc(c,dst);
}
fclose(dst);
fclose(src);
return 0;
}
fputs函数
头文件:stdio.h
功能:向文件写入字符串
函数声明:int fputs(const char *s, FILE *stream);
参数:
s:字符串所在首地址
*stream:指向所要写入的文件的指针
int:成功返回一个非负数,失败或完成返回EOF
fgets函数:
头文件:stdio.h
功能:从文件中读取字符串
函数声明:char *fgets(char *s, int size, FILE *stream);
参数:
s:要把读到的字符串放到哪里
size:每次读取的字符串大小。
stream:要读的文件的地址
fgets从文件中读取内容,fputs把内容放入另一个文件:
#include <stdio.h>
int main(int argc,char *argv[])
{
if(argc < 3)
{
printf("")
}
FILE *src = fopen("2.txt","r");
FILE *dest = fopen("3.txt","w");
if(src == NULL || dest == NULL)
{
printf("open error");
return 1;
}
while(1)
{
char buf1[20] = "hello wolrd!";
int n = fputs(buf1,dest);
if(n == EOF)
{
return 1;
}
char buf2[1024] = {0};
char *s = fgets(buf2,sizeof(buf1),dest);
if(s == NULL)
{
return EOF;
}
}
fclose(src);
fclose(dest);
return 0;
}
fwrite函数:
功能:用于写文件(既可以操作二进制文件又可以操作文本文件)
函数声明:
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
参数:
*ptr:要写内容的首地址
size:要写入的字节大小
nmemb:要写入数据单元的个数
stream:写入内容文件的地址
返回值:成功返回实际写入文件的数据单元的个数
struct student
{
char name[20];
int sno;
char sex;
};
int main()
{
typedef struct student STU;
FILE *fp = fopen("2.txt","w");
if(fp ==NULL)
{
printf("open error");
return 1;
}
STU per = {"wangwang",2024,'b'};
int n =fwrite(&per,sizeof(per),1,fp);
if(n == EOF)
{
return 1;
}
}
fread函数:
函数声明: size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
*ptr:放置所读内容的首地址
size:要读入的字节大小
nmemb:要读的数据单元的个数
stream:指向要读取的文件
返回值:成功返回实际读取文件的数据单元的个数
#include <stdio.h>
#include <string.h>
struct student
{
char name[20];
int sno;
char sex;
};
int main()
{
FILE *fp = fopen("2.txt","r");
if(fp == NULL)
{
printf("open error");
return 1;
}
typedef struct student PER;
PER per;
bzero(&per,sizeof(per));
int n = fread(&per,sizeof(per),1,fp);
if(n == EOF)
{
return 1;
}
printf("%s %d %c\n",per.name,per.sno,per.sex);
}