码迷,mamicode.com
首页 > 其他好文 > 详细

文件操作

时间:2015-12-14 22:50:28      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

刚才学妹问了我几个文件操作,我也不会,搜索了下,记录下来

参考网址:

这段程序中fgets(str, 12, fr)的意思是从fr所指的文件中读取长度为11的字符串,然后赋给str,因为最后一个是‘\0‘代表字符串结束

#include <stdio.h>
int main()
{
    FILE *fr = fopen("a.txt", "r");
    char str[40], *p = str;
    fgets(str, 12, fr);
    printf("%s\n", str);
    p+=6;
    printf("%c%c%c,%s", p[0], p[2], p[4], p+1);
    fclose(fr);
}

 下面这段程序,逐个在文件中写入int类型的数据1234,然后从文件中读取两个int类型的数字并输出,但是结果是1234,0

看完之后忽然明白这种方式读取文件是以字符串的形式读取的,所以读取的第一个int类型的数据输出为1234

因为文件中只有一个数字,但是读取的时候要读取两个数字,这时候第二个数据自动附为0, 虽然我无法解释,但是这是我看到的事实

#include <stdio.h>
int main()
{
    FILE *fp;
    int i,k=0,n=0;
    fp=fopen("d1.dat","w");
    for(i=1;i<=4;i++)
        fprintf(fp, "%d", i);
    fclose(fp);
    fp=fopen("d1.dat","r");
    fscanf(fp,"%d%d",&k,&n);
    printf("%d,%d\n",k,n);
    fclose(fp);
}

 看完下面程序之后学会了了fscanf和fprintf使用

fscanf的功能是从一个流中执行格式化输入,fscanf()遇到空格或者换行符结束

但是fgets遇到空格不结束返回值为整形,含义为读入的参数的个数,失败则返回EOF(-1)

fprintf的含义是格式化输出到一个流文件中,函数根据指定的format(格式)发送信息(参数)到stream(流)指定的文件

fprintf只能和fprintf一样工作,fprintf的返回值是输出的字符数,发生错误时返回一个负值

/*
    下列给定程序中,函数fun的功能是:
    将自然数1~NN及其平方根写到名为myfile3.txt的文本文件中,
    然后再顺序读出显示在屏幕上。请修正提示位置的语句后,运行通过。
*/
#include<math.h>
#include<stdio.h>

int NN;
float sum=0;
int fun(char* fname)
{
    FILE *fp;
    int i,n;
    float x;
    scanf("%d",&NN);
    if((fp=fopen(fname, "wt+"))==NULL)
        return 0;
    for(i=1;i<= NN;i++)
        fprintf(fp, "%d %f\n", i, sqrt(i));
    fclose(fp);
    if((fp=fopen(fname, "r+"))== NULL)
        return 0;
    fscanf(fp,"%d%f",&n,&x);
    while(!feof(fp))
    {
        sum+=x;
        fscanf(fp,"%d%f", &n, &x);
    }
    printf("sum=%f\n",sum);
    fclose(fp);
    return 1;
}
int main()
{
    char fname[]="myfile3.txt";
    fun(fname);
}

 

文件操作

标签:

原文地址:http://www.cnblogs.com/rain-1/p/5046503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!