fopen:打开文件
FILE * fopen(const char * path, const char * mode);
常用,就不介绍了哈。
fscanf:将文件中的内容写入字符串或数字。
int fscanf(FILE * stream, const char * format, [argument...]);
FILE * stream,文件指针
const char * format,格式字符串
[argument...],输入列表
例子:
文档1.txt内容如下
123
zxc
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int i =0;
char c[10];
FILE *p;
p = fopen("1.txt", "a+");
if (p == nullptr)
printf("NULL\n");
fscanf(p,"%d %s",&i,c);
printf("%d\n%s\n", i,c);
getchar();
fclose(p);
return 0;
}
结果如下:
123
zxc
fprintf:将格式化的字符串写入文件。
int fprintf(FILE*stream,const char*format,[argument]……)
返回值是写入的字符数,发生错误返回负值。
例子:
#include <stdio.h>
int main(void)
{
FILE *f;
char str[] = "Hello World!";
f = fopen("Hello.txt", "w+");
int num = fprintf(f, "%s", str);
printf("num=%d\n",num);
getchar();
fclose(p);
return 0;
}
结果如下:
num=12
fread:用于从文件流中读取数据
size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
stream ,打开的文件指针,
ptr, 指向欲存放读取进来的数据空间, 读取的字符数以参数size*nmemb 来决定.
Fread()会返回实际读取到的nmemb 数目, 如果此值比参数nmemb 来得小, 则代表可能读到了文件的尾或有错误发生, 这时必须用feof()或ferror()来决定发生什么情况.
例子:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
int i = 0;
char c[10];
memset(c,0, 10);
FILE *p;
p = fopen("1.txt", "r");
int rs = feof(p);
printf("%d\n", rs);
if (p == nullptr)
printf("NULL\n");
fread(c, 1, 10, p);
printf("%s\n", c);
rs = feof(p);
printf("%d\n", rs);
getchar();
fclose(p);
return 0;
}
结果如下:
0
123
zxc
1
fwrite:向指定的文件中写入若干数据块。
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
例子:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char c[] = "hello world";
char _c[15];
FILE *p;
p = fopen("h.txt", "w+");
fwrite(c, 1, strlen(c), p);
fread(_c, 1, strlen(c), p);
printf("%s\n", c);
getchar();
fclose(p);
return 0;
}
feof:判断是否到达文件结尾
int feof(FILE * stream);
到达文件尾返回非0,其他情况返回0.
fgets:从文件流读取数据,每次读一行。没读完下一次接着这一行读。
char *fgets(char *buf, int bufsize, FILE *stream);
例子:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char c[20];
char _c[20];
FILE *p;
p = fopen("1.txt", "r");
fgets(c, 8, p);
printf("%s\n", c);
fgets(_c, 8, p);
printf("%s\n", _c);
getchar();
fclose(p);
return 0;
}
结果如下:
1234567
89abcde
fputs:把字符串写入到指定的流( stream) 中,但不包括空字符。
int fputs(const char *str, FILE *stream);
例子:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char c[] = "hello world";
char _c[20];
FILE *p;
p = fopen("1.txt", "w+");
fputs(c, p);
fseek(p, 0, 0);//重定位
fgets(_c, 20, p);
printf("%s\n", _c);
fclose(p);
getchar();
return 0;
}
结果如下:
hello world
fseek:重定位流上的文件内部位置指针
执行后,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。
int fseek(FILE *stream, long offset, int fromwhere);
offset,偏移量,正数正向偏移,负数负向偏移。
fromwhere,从哪里偏移,
SEEK_SET: 文件开头,0
SEEK_CUR: 当前位置,1
SEEK_END: 文件结尾,2
例子:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
int i = 0;
char c[10];
memset(c,0, 10);
FILE *p;
p = fopen("1.txt", "r"); ;
if (p == nullptr)
printf("NULL\n");
fread(c, 1, 10, p);
printf("%s\n", c);
fseek(p, 0, 0);
fread(c, 1, 10, p);
printf("%s\n", c);
getchar();
fclose(p);
return 0;
}
结果如下:
123
zxc
123
zxc
rewind:设置文件位置为给定流 stream 的文件的开头。
void rewind(FILE * stream);
例子:
#include <stdio.h>
int main()
{
char str[] = "rewind test";
FILE *fp;
char ch[20];
fp = fopen("file.txt", "w+");
fwrite(str, 1, sizeof(str), fp);
rewind(fp);//写入后文件位置指针变化,定位到开头
fgets(ch,12,fp);
printf("%s\n", ch);
rewind(fp);//定位到开头
fgets(ch, 15, fp);
printf("%s\n", ch);
fclose(fp);
getchar();
return(0);
}
结果如下:
rewind test
rewind test