打开文件失败

File Failure On Open

出于教育目的,我正在编写一个小的加密程序(不是真正的加密)。我已经重组了程序,所以我所有的代码都主要是为了简化我自己的事情。

我的未加密文件失败。我不知道为什么。这是我目前所知道的。

  1. 使用Xcode
  2. 通过切换文件打开(和测试)的顺序来测试语句以仅验证未加密的文件失败:它是
  3. 转到构建阶段 >> 复制文件 >> 添加文件,将两个文件都添加到绝对路径
  4. 我检查了文件和我的代码的拼写
  5. 为了更好的措施再次更改了顺序,仍然未加密文件失败
  6. 清除了任何可能意外出现的标志
  7. 后退文件的 read/write 个位置

这是我的完整代码。

//  This program reads the contents of a file, encrypts it, and write the contents into a separate file.


#include <iostream>
#include <fstream>
#include <cctype>
#include <cstring>
#include <cmath>

using namespace std;

// Global Constants
const int POSITIVE_INT_LIMIT = 10;
const int NEGATIVE_INT_LIMIT = -10;
const int SLOPE_NEGATIVE = -1;
const int SLOPE_POSITIVE = 1;
const int STEP = 1;

int main() {

    int amplitude = 0, slope = SLOPE_NEGATIVE; //Set initial amplitude and slope.

    int streamSize = 1;

    char ch, cy;
    char *chPtr = &cy; // Initialize and assign char pointer.

    //open an unencrypted file to read from
    fstream unEncryptedFile;
    unEncryptedFile.open("testA", ios::in | ios::binary);

    //open a file to write encrypted info
    fstream cryptFile;
    cryptFile.open("testB", ios::out | ios::binary);

    //Clear flags previous set, just in case
    unEncryptedFile.clear();
    cryptFile.clear();

    //Rewind the files, just in case
    unEncryptedFile.seekg(0L, ios::beg);
    cryptFile.seekp(0L, ios::beg);

    if (unEncryptedFile.fail()) {
        cout << "Error opening read file." << endl;
        exit(1);
    }

    if (cryptFile.fail()) {
        cout << "Error opening write file." << endl;
        exit(1);
    }



    /*      Encryption pattern inside while-loop.

     limit>     10                             *
                9                             * *
                8                            *   *
                7                           *     *
                6                          *       * 
                5                         *         *
                4                        *           *
                3                       *             *
                2                      *               *
                1                     *                 *
     start>     0*2345678901234567890*2345678901234567890* -- < one hertz (cycle)
               -1 *                 *
               -2  *               *   (Number line: each integer represents a single while-loop cycle.)
               -3   *             *
               -4    *           *
               -5     *         *
               -6      *       *
               -7       *     *
               -8        *   *
               -9         * *
     limit>    -10         *

     */
    /*************************************************************
     The pattern above depictes a single character
     being read, and then the value of amplitude is added to it.

     *************************************************************/

    while (!unEncryptedFile.fail()) {

        ch = unEncryptedFile.get(); // Get the next character in the file.

        cout << ch << endl; // test for proper read

        if (amplitude > NEGATIVE_INT_LIMIT && slope == SLOPE_NEGATIVE) {
            amplitude -= STEP;
            cy = ch + amplitude;
            cryptFile.write(chPtr, streamSize); //Adjusted character value, cy, is written to file.

        } else if (amplitude <= NEGATIVE_INT_LIMIT){
            slope = SLOPE_POSITIVE;
            amplitude = NEGATIVE_INT_LIMIT;
            cy = ch + amplitude;
            cryptFile.write(chPtr, streamSize); //Adjusted character value, cy, is written to file.

        } else if (amplitude < POSITIVE_INT_LIMIT && SLOPE_POSITIVE){
            amplitude += STEP;
            cy = ch + amplitude;
            cryptFile.write(chPtr, streamSize); //Adjusted character value, cy, is written to file.

        } else if (amplitude >= POSITIVE_INT_LIMIT){
            slope = SLOPE_NEGATIVE;
            amplitude = POSITIVE_INT_LIMIT;
            cy = ch + amplitude;
            cryptFile.write(chPtr, streamSize); //Adjusted character value, cy, is written to file.
        }

    }

    //Files are closed.
    unEncryptedFile.close();
    cryptFile.close();



    return 0;
}

您需要在打开文件时提供文件扩展名和文件名

int main() {

    int amplitude = 0, slope = SLOPE_NEGATIVE; //Set initial amplitude and slope.

    int streamSize = 1;

    char ch, cy;
    char *chPtr = &cy; // Initialize and assign char pointer.

    //open an unencrypted file to read from
    fstream unEncryptedFile;

    unEncryptedFile.open("testA.txt", ios::in | ios::binary);

我用这个试过你的代码,它工作正常。