Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2013, 13:13   #1
aank10
Пользователь
 
Регистрация: 12.02.2011
Сообщений: 81
По умолчанию Ошибка в объявлении функции

Здраствуйте, помогите найти ошибку указывает на то что неправильно вызываются функции do_ls(*argv, ""); и функция dostat(direntp->d_name, dirname.c_str()); ///функция слияние пути
Код:
int main(int argc, char *argv[])
{
    ShowCopyright(); // функция вывода прав копирайта

    if(argc == 1)       // если не введена команда то выводим помощь
    {
        cout << "Введена неизвестная команда, прочти помощь или введи команду help" << endl;
        ShowHelp(); /// функция вывода помощи

        return 0;
    }

string sArg(argv[1]);

    if(!sArg.compare("help")) /// если введена команда help то выводим помощь
    {
        ShowHelp(); /// функция вывода помощи

        return 0;
    }

    if(!sArg.compare("dir")) ///при вводе команды dir сканируем ключи  отображения
     {
        for (int i = 2; i < argc; i++) /// считываем  для команды dir ключи
        {
            string sArg(argv[i]);


            if(!sArg.compare("/all")) // если введен ключ /all отображаем всю информацию об каталоге такую как права доступа, количество ссылок на файл, имя владельца, имя группы, размер, время последнего редактирования
            {
                all = "/all";
                blSeeName = true;  /// не отображать им файлов так как оно отобразится в ключе /all
            }


            if(!sArg.compare("/p")) /// если введен ключ /p то отображаем права доступа
            {
                p = argv[i];
            }

            if(!sArg.compare("/s")) /// если введен ключ /s то отображаем количество ссылок на файл
            {
                s = argv[i];
            }

            if(!sArg.compare("/v")) /// если введен ключ /v то отображаем имя владельца
            {
                v=argv[i];
            }

            if(!sArg.compare("/g")) /// если введен ключ /g то отображаем имя группы
                g=argv[i];

            if(!sArg.compare("/r")) /// если введен ключ /r то отображаем размер ф
                r=argv[i];

            if(!sArg.compare("/t")) ///если введен ключ /t то отображаем время последнего редактирования
                t=argv[i];

        }
     }


    if (argc != 1) // если заданы параметры для командной строки то считываем все файлы в каталоге
    {
        while (--argc)
        {
            cout << *++argv << endl;
            do_ls(*argv, ""); //выполнение функции на проверку существования файлов
        }
    }

    return 0;
}
//-----------------------------------------------------------------------------------------------
/**
 * Функция отображения информации о директории. Возвращает количество файлов
 *
 * Функция открываеткаталог для чтение всех файлов в каталоге
 * и подсчета количества файлов в каталоге.
 * \param [in] ...
 * \return ...
 */
int do_ls(string &dirname,  string &filename) /// функция отображения информации о директории. Возвращает количество файлов
{
    DIR *dir_ptr;
    dirent *direntp;
    int colCount = 0; /// cчетчик количества

    if((dir_ptr = opendir(dirname.c_str())) != NULL)   /// открываем директорию
    {

        while((direntp=readdir(dir_ptr)) != NULL)   /// Циклически считываем содержимое директории
        {
                    if (filename.empty())
                    {
                       dostat(direntp->d_name, dirname.c_str()); ///функция слияние пути
                       colCount++; /// увеличиваем счетчик количества
                       kolkatalog=1; /// устанавливаем флаг для вывода количества файлов в каталоге  1 раз 55
                    }


        }
        /// закрываем директорию.
        closedir(dir_ptr);
    }

    if(kolkatalog == 1)
    {
        cout << "\nКоличество файлов в каталоге = " << colCount << endl;
        kolkatalog =0; /// устанавливаем флаг для запрета вывода количества файлов в каталоге
    }

    return colCount;
}
obj/Debug/main.o||In function `main':|
/data_file/main.cpp|112|undefined reference to `do_ls(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
obj/Debug/main.o||In function `do_ls(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':|
/data_file/main.cpp|140|undefined reference to `dostat(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
||=== Build finished: 2 errors, 0 warnings ===|

Последний раз редактировалось aank10; 09.07.2013 в 13:24.
aank10 вне форума Ответить с цитированием
Старый 09.07.2013, 15:00   #2
b2soft
Упртй программер
Форумчанин
 
Регистрация: 26.11.2009
Сообщений: 150
По умолчанию

аа где описание функции dostat? do_ls должна быть описана до функции main
Помощь с кодом/лабами по С/С++
Контакты: ICQ 623334555 Skype: btwosoft; Mail: b2soft@yandex.ru
b2soft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в объявлении параметра функции (матрицы) AnnNoob Помощь студентам 5 09.05.2013 23:56
deque. Ошибка при объявлении итератора 8Observer8 Общие вопросы C/C++ 10 26.01.2013 00:31
Ошибка при объявлении переменных mishev Общие вопросы C/C++ 20 23.08.2012 20:19
Ошибка при объявлении файла записей bogdanidze Помощь студентам 2 13.05.2011 08:26
Ошибка в объявлении переменных Superlotles Помощь студентам 1 17.12.2009 17:05