2016-01-27 49 views
0

我試圖根據納粹德國的Enigma機器如何工作來創建加密文件的程序,但沒有缺陷:P。C++從文件中返回字符「返回」字符出現兩次

我有一個函數可以獲取文件中第n個點的一個字符,但是當它返回一個返回字符時,它就像輸入兩次一樣。 IE如果我循環從i COUT-ING在文件++個終端中的各條線出現由更多的回報

多於一個的分離

這裏的功能:

char charN(string pathOf, int pointIn){ 
    char r = NULL; 
     // NULL so I can tell when it doesn't return a character. 
    int sizeOf; //to store the found size of the file. 
    ifstream cf; //to store the Character Found. 
    ifstream siz; //used later to get the size of the file 

    siz.open(pathOf.c_str()); 

    siz.seekg(0, std::ios::end); 
    sizeOf = siz.tellg(); // these get the length of the file and put it in sizeOf. 

    cf.open(pathOf.c_str()); 
    if(cf.is_open() && pointIn < sizeOf){ //if not open, or if the character to get is farther out than the size of the file, let the function return the error condition: 'NULL'. 
     cf.seekg(pointIn); // move to the point in the file where the character should be, get it, and get out. 
     cf.get(r); 
     cf.close(); 
    } 
    return r; 
} 

它正常工作,如果我使用的cout < < '\ n',但什麼是關於從一個文件, '\ n' 回報不同? 還是有什麼我失蹤? 我一直在Google上搜索,但我無法找到任何遠程類似於我的問題,在此先感謝。

我使用Code :: Blocks 13.12作爲我的編譯器,如果這很重要。

+0

NULL不起作用無效字符。它作爲無效指針工作。 –

+0

您正在使用一個,但兩個開閉週期和兩個seekg操作來從文件中獲取單個字符。這不是打算如何使用文件。 –

+0

我需要一次使用單個角色來處理謎題機器的工作原理。 –

回答

1

這是在Windows機器上嗎?在Windows中,文本文件中的新行代表\ r \ n。

  • \ R =回車
  • \ N =換行符

這可能是因爲你單獨couting的每一個和輸出緩衝器被創建用於每一個新行。

+0

我添加了一些代碼來檢查,但它沒有改變任何東西,所以我假設沒有;謝謝。是的WIN7 –

+0

你是對的,這是一個雙\ \,我在每一個換行後跳過1個字符,它的工作正確,所以這是一個漫長的測試和調整之路;謝謝btw。我的意思是,我製作了一個程序讀取文件,但不是隻是對字符進行標註,而是對一些字符進行修飾,這裏有一堆= \\ N == \\ N =屏幕上。 :L –