前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实验3 文件操作

实验3 文件操作

作者头像
步行者08
发布2018-10-09 17:47:42
4150
发布2018-10-09 17:47:42
举报
文章被收录于专栏:图形学与OpenGL图形学与OpenGL

一.实验目的与要求:

  1. 学会使用文件操作函数实现对文件打开、关闭、读、写等操作。
  2. 学会对数据文件进行简单的操作。
  3. 深入理解 C++的输入输出的含义及其实现方法。
  4. 掌握标准输入输出流的应用。

二.实验过程:

  1. 运行调试第8章编程示例8-2文本显示程序;将其改写为一个随机点名的程序,可以参考以下步骤:

    (1)     读入指定文本文件的程序,文本文件格式见参考内容;

    (2)     用随机函数根据文本文件的记录数量生成一个随机数;

    (3)     根据这个随机数,从所读取的记录中找到对应的记录,并输出显示;

  1. 若还有时间,请尝试运行调试第8章编程示例8.3-4;完成练习题8.4.1-3。

三.示例代码:

  1. 编程示例8-2文本显示程序:
#include <iostream>

#include <fstream>

using namespace std;

 

int main() {

    int c;   // input character

    int i;   // loop counter

    char filename[81];

    char input_line[81];

 

    cout << "Enter a file name and press ENTER: ";

    cin.getline(filename, 80);

 

    ifstream file_in(filename);

 

    if (! file_in) {

        cout << "File " << filename << " could not be opened." << endl;

        system("PAUSE");

        return -1;

    }

 

    while (1) {

        for (i = 1; i <= 24 && ! file_in.eof(); i++) {

            file_in.getline(input_line, 80);

            cout << input_line << endl;

        }

        if (file_in.eof())

            break;

        cout << "More? (Press 'Q' and ENTER to quit.)";

        cin.getline(input_line, 80);

        c = input_line[0];

        if (c == 'Q' || c == 'q')

            break;

    }

    system("PAUSE");

    return 0;

}
  1. 文本文件格式,从第二行起:

序号 学号             姓名

1    31140906012*  商**

2    31150906010*  王*

3    31150906011*  韩*

  1. 编程示例8-3:
#include <iostream>
#include <fstream>
using namespace std;
 
int get_int(int default_value);
char name[20];
 
int main() {
    char filename[81];
    int n;
    int age;
    int recsize = sizeof(name) + sizeof(int);
   
 
    cout << "Enter file name: ";
    cin.getline(filename, 80);
 
    // Open file for binary read and write.   
 
    fstream  fbin(filename, ios::binary | ios::out);
    if (!fbin) {
        cout << "Could not open file " << filename << endl;
        system("PAUSE");
        return -1;
    }
 
//  Get record number to write to.
 
    cout << "Enter file record number: ";
    n = get_int(0);
 
    // Get data from end user.
 
    cout << "Enter name: ";
    cin.getline(name, 19);
    cout << "Enter age: ";
    age = get_int(0);
 
    // Write data to the file.
 
    fbin.seekp(n * recsize);
    fbin.write(name, 20);
    fbin.write(reinterpret_cast<char*>(&age), sizeof(int));
    fbin.close();
    system("PAUSE");
    return 0;
}
 
// Get integer function
// Get an integer from keyboard; return default
//  value if user enters 0-length string.
//
int get_int(int default_value) {
    char s[81];
 
    cin.getline(s, 80);
    if (strlen(s) == 0)
         return default_value;
    return atoi(s);
}
  1. 编程示例8-4:
#include <iostream>
#include <fstream>
using namespace std;
 
int get_int(int default_value);
char name[20];
 
int main() {
    char filename[81];
    int n;
    int age;
    int recsize =  sizeof(name) + sizeof(int);
   
 
    cout << "Enter file name: ";
    cin.getline(filename, 80);
 
    // Open file for binary read access.
 
    fstream  fbin(filename, ios::binary | ios::in);
    if (!fbin) {
        cout << "Could not open file " << filename << endl;
        system("PAUSE");
        return -1;
    }
 
while(1) {
 
        // Get record number and go to record.
 
        cout << "Enter file record number (-1 to quit): ";
        n = get_int(-1);
      if (n == -1)
          break;
       
      fbin.seekp(n * recsize);
 
        // Read data from the file.
 
        fbin.read(name, 20);
        fbin.read(reinterpret_cast<char*>(&age), sizeof(int));
 
        // Display the data and close.
   
        cout << "The name is: " << name << endl;
        cout << "The age is: " << age << endl;
    }
    fbin.close();
    system("PAUSE");
    return 0;
}
 
// Get integer function
// Get an integer from keyboard; return default
//  value if user enters 0-length string.
//
int get_int(int default_value) {
    char s[81];
 
    cin.getline(s, 80);
    if (strlen(s) == 0)
         return default_value;
    return atoi(s);
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年04月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档