【C写文件】C/C++读写文本文件、二进制文件/文件读写

本文详细介绍了C和C++中如何进行文本和二进制文件的读写操作,包括正确的使用feof()判断文件结束,以及C++中fstream的注意事项和获取文件大小的两种方法。
摘要由CSDN通过智能技术生成

目录

一:目的

二:C语言文本文件读写

1. 文本文件写入

2. 文本文件读取

三:C语言二进制文件读写

1. 二进制文件写入

2.二进制文件读取

四:C++文本文件读写

1. 文本文件写入

2.文本文件读取

五:C++二进制文件读写

1. 二进制文件写入

2.二进制文件读取

六 总结

获取文件大小

方法一

方法二


一:目的

掌握C语言文本文件读写方式;

掌握C语言二进制文件读写方式;

掌握CPP文本文件读写方式;

掌握CPP二进制文件读写方式;

二:C语言文本文件读写

1. 写入文本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

 

//采用C模式对Txt进行写出
void TxtWrite_Cmode()
{
    //准备数据
    int index[50] ;
    double x_pos[50], y_pos[50];
    for(int i = 0; i < 50; i ++ )
    {
        index[i] = i;
        x_pos[i] = rand()%1000 * 0.01 ;
        y_pos[i] = rand()%2000 * 0.01;
    }
    //写出txtFILE * fid = fopen("txt_out.txt","w");
    if(fid == NULL)
    {
        printf("写出文件失败!\n");
        return;
    }
    for(int i = 0; i < 50; i ++ )
    {   fprintf(fid,"d\t%4.6lf\t%4.6lf\n",index[i],x_pos[i],y_pos[i]);
    }  fclose(fid);
}

2. 读取文本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

 

//采用C模式对Txt进行读取
void TxtRead_Cmode()
{   FILE * fid = fopen("txt_out.txt","r");
    if(fid == NULL)
    {
        printf("打开%s失败","txt_out.txt");
        return;
    }
    vector<<span style="color:#8000ff;">int> index;
    vector<<span style="color:#8000ff;">double> x_pos;
    vector<<span style="color:#8000ff;">double> y_pos;
    int mode = 1;
    printf("mode为1,按字符读入并输出;mode为2,按行读入输出;mode为3,知道数据格式,按行读入并输出\n");
    scanf("%d",&mode);
    if(mode == 1)
    {
        //按字符读入并直接输出
        char ch;       //读取的字符,判断准则为ch不等于结束符EOF(end of file)    while(EOF!=(ch= fgetc(fid)))
             printf("%c", ch); 
    }
    else if(mode == 2)
    {
        char line[1024];
        memset(line,0,1024);  while(!feof(fid))
        {
            fgets(line,1024,fid);
            printf("%s\n", line); //输出
        }

    }
    else if(mode == 3)
    {
        //知道数据格式,按行读入并存储输出
        int index_tmp;
        double x_tmp, y_tmp; while(!feof(fid))  
        {  
            fscanf(fid,"%d%lf%lf\n",&index_tmp, &x_tmp, &y_tmp);
            index.push_back(index_tmp);
            x_pos.push_back(x_tmp);
            y_pos.push_back(y_tmp);
        }

        for(int i = 0; i < index.size(); i++)
            printf("d\t%4.8lf\t%4.8lf\n",index[i], x_pos[i], y_pos[i]);
    } fclose(fid);
}

注意&

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值