我正在創建一個程序來複制文本文件。我有一個main.cpp文件,它讀入由文件名數組給出的文本文件,然後輸出由文件名數組給出的文本文件的副本。我在我的FileUtilities.h聲明此功能Visual C++斷言失敗
bool textFileCopy(char filenamein[], char filenameout[]);
然後FileUtilities.cpp包含
#include <iostream>
#include <fstream>
#include <string>
#include "FileUtilities.h"
bool FileUtilities::textFileCopy(char filenamein[], char filenameout[])
{
ifstream fin(filenamein);
if(fin.is_open())
{
ofstream fout(filenameout);
char c;
while(fin.good())
{
fin.get(c);
fout << c;
}
fout.close();
fin.close();
return true;
}
return false;
}
當我編譯此,我得到一個Visual C斷言失敗。我收到標題爲 「微軟的Visual C++調試庫」 對話框,包含以下:
「調試斷言失敗
計劃:..... Parser.exe
文件f: \ DD \ vctools \ crt_bld \ Self_x86 \ CRT \ SRC \ fopen.c
線53
表達:(!文件= NULL)」
此錯誤給了我3個選項:中止,重試或忽略。 中止只是停止調試。重試會在Visual Studio中顯示一條消息,其中提示「program.exe觸發了一個斷點」。如果我在這裏單擊中斷,Visual Studio將打開一個名爲「fopen.c」的文件並指向此文件中的第54行。
如果我從這個角度Visual Studio中繼續打開名爲「dbghook.c」的指針線62
好,很明顯, 'filenamein'或'filenameout'是NULL指針。向我們展示如何調用'textFileCopy'。 – 2011-04-30 20:35:43
你應該以大塊而不是char字符拷貝文件。 – 2011-04-30 20:45:52