Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Застрял 
V
    Опции темы
Ak47black
  Дата 25.2.2010, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Здравствуйте.
Помогите понять в чём-же тут дело
Есть вот такой код
Код

//---------------------------------------------------------------------------

#pragma hdrstop
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <tchar.h>
#include <vector.h>

void getFiles(char * path)
{
   WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    strcat(path, "*.*");
    hFind = FindFirstFile(path, &FindFileData);
    if (hFind == INVALID_HANDLE_VALUE)
    {
        printf("Error. Getting files list.\n", GetLastError());
      return;
   };

    do
    {
        //string str;
        //str = sprintf("%s", FindFileData.cFileName);
        //printf("%s \n", str );
    }
    while (FindNextFile(hFind, &FindFileData) != 0);
   FindClose(hFind);
}

int main(int argc, char* argv[])
{
    getFiles("C:\\");

    std::vector<int> lines;
    lines.push_back(20);
    lines.push_back(30);
    lines.push_back(40);
    for (int i = 0; i < lines.size(); i++)
    {
        printf("%d\n", lines[i]);
    }

    return 0;
}
//---------------------------------------------------------------------------

при выполнении в консоле получаю какой-то хлам.
Если не выполняю функцию
Код

getFiles("C:\\");

то в консоле получаю числа.
Подскажите пожалуйста в чём-же тут дело? 
PM MAIL   Вверх
bsa
Дата 25.2.2010, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Ak47black, если бы ты следовал правилам хорошего тона и ориентировался на предупреждения компилятора, то в объявлении getFiles поставил бы const перед char*, а так же исправил все ошибки, которые тебе выдаст на это компилятор.
PM   Вверх
mes
Дата 25.2.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Ak47black @  25.2.2010,  12:23 Найти цитируемый пост)
void getFiles(char * path)
{
    strcat(path, "*.*");

добавьте const к char * path, а для strcat заведите еще одну переменную-массив, в которую нужно будет перед использованием strcat, скопировать строку path.

smile


--------------------
PM MAIL WWW   Вверх
Ak47black
Дата 25.2.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Ааа теперь понял, опять на те же грабли наступил  smile 
А как грамотно в C++ передать строку в функцию, а потом к ней прибавить что-то.
Тоесть как обычно это делается?
Тут надо использовать string или что-то более интересное есть?

Добавлено через 2 минуты и 31 секунду
Цитата

а для strcat заведите еще одну переменную-массив

тоесть, такого вида
Код

char pathA[255]

?

Добавлено через 10 минут и 44 секунды
Слушайте, а можно-ли как-то в C++ stringом обойтись
Например, что-то в этом роде
Код

void getFiles(string path)
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    strcat(path, "*.*");

?
PM MAIL   Вверх
bsa
Дата 25.2.2010, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(Ak47black @  25.2.2010,  13:50 Найти цитируемый пост)
Слушайте, а можно-ли как-то в C++ stringом обойтись
можно. Так:
Код
void getFiles(std::string path)
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
    path += "*.*";


PM   Вверх
Ak47black
Дата 25.2.2010, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Спасибо , так намного лучше. smile

Это сообщение отредактировал(а) Ak47black - 25.2.2010, 14:17
PM MAIL   Вверх
mes
Дата 25.2.2010, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(bsa @  25.2.2010,  13:10 Найти цитируемый пост)
std::string path

Ak47black, тогда "придется" писать FindFirstFile (path.c_str(), &FindFileData);


Это сообщение отредактировал(а) mes - 25.2.2010, 14:32


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.