Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > Парни помогите, вы все знаете ответ на этот вопрос |
Автор: bloood 30.3.2007, 23:26 |
Данная программа сравнивает файлы, вопрос такой: данная программа запускается с помощью консоли, чтоб запустить надо ввести в консоли <имя проги> <имя файла1> <имя файла 2>(enter)....как указать в коде пути к файлу1 и файлу2, чтоб не вводить их при запуске из консоли??? <имя проги> это ЕХЕ файл, полученый из кода ниже. Xpsp2, borland turbo c++ 2006. Спасибо! #include <vcl.h> #pragma hdrstop #include <iostream> #include <fstream> using namespace std; //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char *argv[]) { register int i; int numread; unsigned char buffer1[4096], buffer2[4096]; if(argc!=3) { cout << "Usage: compfiles <file1> <file2>\n"; return 1; } ifstream f1(argv[1], ios::in | ios::binary); if(!f1) { cout << "Cannot open first file.\n"; return 1; } ifstream f2(argv[2], ios::in | ios::binary); if(!f2) { cout << "Cannot open second file.\n"; return 1; } cout << "Comparing files...\n"; do { f1.read((char *) buffer1, sizeof buffer1); f2.read((char *) buffer2, sizeof buffer2); if(f1.gcount() != f2.gcount()) { cout << "Files are of differing sizes.\n"; f1.close(); f2.close(); return 0; } for(i = 0; i <f1.gcount(); i++) // compare contents of buffers if(buffer1[i] != buffer2[i]) { cout << "Files differ.\n"; f1.close(); f2.close(); return 0; } } while(!f1.eof() && !f2.eof()); cout << "Files are the same.\n"; f1.close(); f2.close(); return 0; } |
Автор: Xenon 31.3.2007, 01:32 | ||
|
Автор: bloood 31.3.2007, 10:05 |
Не работает, вот что выдаёт при запуске, номер строки, как в твоём коде.... [C++ Error] Unit1.cpp(18): E2451 Undefined symbol 'stding' [C++ Error] Unit1.cpp(18): E2379 Statement missing ; [C++ Error] Unit1.cpp(19): E2285 Could not find a match for 'ifstream::basic_ifstream(string,_Iosb<int>::_Openmode)' [C++ Error] Unit1.cpp(25): E2451 Undefined symbol 'path_b' [C++ Error] Unit1.cpp(25): E2285 Could not find a match for 'ifstream::basic_ifstream(undefined,_Iosb<int>::_Openmode)' Добавлено через 7 минут и 8 секунд Прошу прощение, опечатка в строке 18 вместо stding, должно быть string.... Но всё равно ошибки в строках 19 и 25 такого плана [C++ Error] Unit1.cpp(19): E2285 Could not find a match for 'ifstream::basic_ifstream(string,_Iosb<int>::_Openmode)' [C++ Error] Unit1.cpp(25): E2285 Could not find a match for 'ifstream::basic_ifstream(string,_Iosb<int>::_Openmode)' |
Автор: mr.Anderson 31.3.2007, 10:20 |
Это речь о том, что нет конструктора класса ifstream с теми аргументами, которые заданы. В скобках может быть указано только имя файла. |
Автор: _Natalia_ 31.3.2007, 11:25 | ||||
А мона девченки тоже помогут?
попробуй так, просто конструктор ifstream берет как первый аргумент const char*, а не string, ну или в предыдущем ответе, просто сделай вот так
функция c_str() возвращает string в виде const char* |
Автор: 0lmer 31.3.2007, 13:34 |
а так можно??? |
Автор: Xenon 31.3.2007, 13:49 | ||
Блин, вот что ночь в людьми делает ... Совсем забыл
PS. Опередили ![]() Добавлено через 1 минуту и 41 секунду 0lmer, У тебя путь из одного символа будет ![]() |
Автор: Xenon 31.3.2007, 14:08 |
Но тогда появится летучий голандец в виде одного элемента char |
Автор: bloood 31.3.2007, 17:03 |
Блин у меня нет 100 постов, чтоб изменять репутацию, СПАСИБО ВАМ ВСЕМ ОГРОМНОЕ, всё работает как надо... |