zoukankan      html  css  js  c++  java
  • 实验3 文件操作

    一.实验目的与要求:

    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);
    
    }
  • 相关阅读:
    1094. Car Pooling
    121. Best Time to Buy and Sell Stock
    58. Length of Last Word
    510. Inorder Successor in BST II
    198. House Robber
    57. Insert Interval
    15. 3Sum java solutions
    79. Word Search java solutions
    80. Remove Duplicates from Sorted Array II java solutions
    34. Search for a Range java solutions
  • 原文地址:https://www.cnblogs.com/opengl/p/6563588.html
Copyright © 2011-2022 走看看