Не могли бы вы опубликовать оригинальный код? Размещенный вами код даже не компилируется.
Ошибки, которые я заметил, по порядку:
processOneFile (*infile, *outfile, fileList);
Нет процедуры processOneFile()
.
istream *infile = &cin; // default value
ostream *outfile = &cout; // default value
Node* fileList;
case 1: // use cin and cout
break;
processOneFile (*infile, *outfile, fileList);
Это вызовет processOneFile()
с неинициализированным списком файлов, который вылетит при попытке напечатать имя файла.
else {
Node aFile = {argv[1], 0};
fileList = &aFile;
cout << "in main: " << fileList->fileName << endl;
}
aFile
находится только в области действия в этом else
, поэтому попытка использовать указатель на него позже не удастся.
string getFileName(string oneLine) {
///
return NULL;
}
Вы не можете создать std::string
из NULL
- это приведет к сбою программы.
После исправления этих ошибок, чтобы ваш код не зависал, я не смог воспроизвести ошибку.
Если вы работаете в Linux, попробуйте увеличить уровень предупреждения (с g++ -Wall -Wextra -ansi -pedantic
) и запустить код через valgrind
, чтобы проверить ошибки памяти.