文件操作以及fprintf()、fscanf()、fgets()、fputs()

fopen参数

FILE * fopen(const char * path,const char * mode);

参数mode字符串则代表着流形态。

  mode有下列几种形态字符串:

  r 打开只读文件,该文件必须存在。

  r+ 打开可读写的文件,该文件必须存在。

  rb+ 读写打开一个二进制文件,只允许读写数据。

  rt+ 读写打开一个文本文件,允许读和写。

  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

  a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

  wb 只写打开或新建一个二进制文件;只允许写数据。

  wb+ 读写打开或建立一个二进制文件,允许读和写。

  wt+ 读写打开或着建立一个文本文件;允许读写。

  at+ 读写打开一个文本文件,允许读或在文本末追加数据。

  ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

  上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。

 有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。

 

fopen函数的模式字符串可以用6个字符组成
r(read)    读
w(write)     写
a(append)    追加
t(text)    文本模式
b(banary)    二进制模式
+      读取和写入


fprintf、fscanf的读写对象不是终端而是磁盘文件


fprintf()函数原型//向文件中写入数据

fprintf(文件指针,格式控制串,输出列表)
输出列表中的数据,按照格式控制串的格式写入由fp所指的文件。

实例代码

int main(void)
{
    int i = 50;
    FILE *fp;
    fp = fopen("student.txt", "w");
    if (fp == NULL)
    {
        printf("打开失败");
        exit(0);
    }
    fprintf(fp, "%d", i);//把i的值按照%d的格式写入到fp所指向的文件中
    fclose(fp);
    return 0;
}


fscanf()函数原型//从文件中读取数据

fscanf(文件指针,格式控制串,输入列表);

按照格式控制串的格式从文件指针中读取数据,并写入到输入列表

int main(void)
{
    int i;
    FILE *fp;
    fp = fopen("student.txt", "r");
    if (fp == NULL)
    {
        printf("打开失败");
        exit(0);
    }
    fscanf(fp, "%d", &i);//按照%d的格式从fp所指向的文件中读取数据,并写入到变量i中
    printf("%d", i);
    fclose(fp);
    system("pause");
    return 0;
}


fputs()函数原型//向文件中写入字符串

fputs
函数的功能是向指定的文件写入一个字符串,其调用形式为:
fputs(字符串,文件指针)
其中字符串可以是字符串常量,也可以是字符数组名,或指针变量
;

例如

fputs("abcde",fp);//把字符串"abcde"写入到fp所指向的文件中,fp为文件指针

char ch[80] = {"000000"};

fputs(ch,fp);//把字符数组ch写入到fp中


fgets//读字符串函数
函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:fgets(字符数组名,n,文件指针);
其中的n是一个正整数。表示从文件中读出的字符串不超过n-1个字符。在读入的最后一个字符后加上串结束标志'\0'

例如:
fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值