2015-12-02 2 views
0

для образовательных целей, я пишу небольшую программу шифрования (не настоящее шифрование). Я изменил программу, поэтому весь мой код в основном упрощает для себя.Ошибка файла при открытии

Мой файл с незащищенным файлом не работает. Я не знаю почему. Вот что я знаю до сих пор.

  1. Использование Xcode
  2. Испытано заявление переключения порядка, которые открываются файлы (и испытанные) для проверки только в незашифрованном виде файл неудача: это
  3. Унесенного Построить Фазы >> Копирование файлов >> Добавить файл, добавив оба файл Absolute Path
  4. Я проверил написание файлов и мой код
  5. Изменен порядок снова для хорошей меры, по-прежнему незашифрованном файл не
  6. ОСВОБОЖЕННЫХ любых флагов, которые могут случайно б е там
  7. перемотана позиции чтения/записи файлов

Вот мой код в полном комплекте.

// 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*23456789*23456789* -- < 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; 
} 
+0

Рассмотрите [http://stackoverflow.com/questions/24097580/ifstreamis-open-vs-ifstreamfail](this) как наилучшую практику проверки отказов и используйте 'while (! UnEncryptedFile.eof()) как end-of-file check – ankhzet

+0

@ankhzet, интересно, используя 'while (! unEncryptedFile.eof())' создал бесконечный цикл, с \ 377 как вывод ... Я не знаю, что с этим сделать. – NonCreature0714

+0

Вы пробовали 'unEncryptedFile.read (& ch, 1);' вместо 'ch = unEncryptedFile.get();' в сочетании с 'while (! UnEncryptedFile.eof())'? – ankhzet

ответ

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); 

Я попробовал ваш код с этим, и это работает.

+0

Я просто попробовал его с расширениями и это не работает для меня ... Перезапуск компилятора ... И это не может не открыться ... Итак, что-то продолжалось с моим компилятором **: / – NonCreature0714

Смежные вопросы