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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считование имени фаила 
:(
    Опции темы
A...
Дата 8.2.2005, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 5.10.2004
Где: Ереван

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



Привет всем...

Есть такая проблема, есть фолдер "а", в зтом фолдере есть фаил "а.txt", нужно написать программу которая считавает имя фаила "а.txt" и записавает зто имя в какой нибудь string... (использовать WinAPI нельзя потому что зта программа должна работать и под Linux тоже)

smile

Зарание спасибо...
--------------------
Особое спасибо Русскому языку за предоставленные буквы...
PM MAIL ICQ   Вверх
azesmcar
Дата 8.2.2005, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Что значит считывает имя файла??? Вопрос непонятен лично мне...

Если тебе нужна программа которая будет осуществлять поиск по папаке (т.е. перелистать все файлы находящиейся в указанной папке) тогда это функции findfirst, findnext.

Если нет, то мне ничего непонятно smile
Добавлено @ 13:16
Если знаешь имя файла то что же тогда считывать???
PM   Вверх
A...
Дата 8.2.2005, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 5.10.2004
Где: Ереван

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



Хорош виноват... я не знаю имя фаила, я просто привел пример (для понятности), мне нужно проитись по папке считать имена фаилов и записать куда нибудь чтоб затем работать с зтими именами...

Если можно приведи пример пожаилуста...

Это сообщение отредактировал(а) A... - 8.2.2005, 13:20
--------------------
Особое спасибо Русскому языку за предоставленные буквы...
PM MAIL ICQ   Вверх
Joh
Дата 8.2.2005, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.2.2005
Где: Germany

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



hesnaju kak eto v c++, no privedu primer . bit moshet eto tebe pomoshet smile
zherez Shell - naprimer: "dir c:\temp\*.txt /B >c:\vse-txt-fajli.txt "
vse imena failov iz papki "temp" nahodatsa w "c:\vse-txt-fajli.txt"
pravilnaja idea ili net ?
PM MAIL   Вверх
A...
Дата 8.2.2005, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 5.10.2004
Где: Ереван

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



Идея хорошая, если бы ты еше написал как мне написать программу которая делела бы зто все сама то зто было бы именно то что мне нужно..smile
--------------------
Особое спасибо Русскому языку за предоставленные буквы...
PM MAIL ICQ   Вверх
Joh
Дата 8.2.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.2.2005
Где: Germany

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



kak ja ushe napisal ne imeju bolshogo opita s c++ smile
ja ispolsuju eto v "LotusScript":
pri starte etogo agenta budet sdelan File (cmd ili bat), kotorij sodershit
"dir c:\temp\*.txt /B >c:\vse-txt-fajli.txt "
Path dla etogo prikasa(?) moshno do etogo oprosit. naprimer zcheres UserInput...

result=Shell("c:\*.cmd")


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


uploading...
****


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

Репутация: 81
Всего: 211



Код

#include <io.h>
#include <stdio.h>
#include <string.h>

void main()
{
   _finddata_t data;
   long ff = _findfirst("*.*", &data);
   do
   {
       if ( strcmp(data.name, ".") && strcmp(data.name, "..") )
           printf( "%s\n", data.name );
   } while ( !_findnext(ff, &data) );
   _findclose( ff );
}


Это сообщение отредактировал(а) azesmcar - 8.2.2005, 13:57
PM   Вверх
A...
Дата 8.2.2005, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 5.10.2004
Где: Ереван

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



а зтот код под Линух будет работать..?

вот работаюший код

Код

#include <stddef.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <iostream.h>

int main(void)
{
const char *dir_name = "/afs/ifh.de/user/a/aram/Desktop/testReadFile";
char *string;
DIR *pDirectory;
struct dirent *pStruct;

pDirectory = opendir (dir_name);
if(pDirectory != NULL){
 while (pStruct = readdir(pDirectory))
 puts(pStruct->d_name);
 (void) closedir(pDirectory);
}
else
 puts("Couldn't open teh directory: %s\n");

strcpy(pStruct->d_name, string);

cout<<&string<<endl;

return 0;
}


P.S. Copyright by Chunk..smile
--------------------
Особое спасибо Русскому языку за предоставленные буквы...
PM MAIL ICQ   Вверх
azesmcar
Дата 8.2.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Не совсем, это CRT но под линукс findfirst и findnext функций я не нашел..в крайнем случае можешь написать так
Код

#ifdef WIN32
//Мой Код
#else
//Код Chunk-а
#endif


PM   Вверх
azesmcar
Дата 8.2.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Приблизительно что то вроде этого...
Надо немного код подправить, для виндоуз цикл должен иметь вид do while а не while, сейчас времени нет, если у тебя не получится пиши, под вечер подправлю напишу...

Код

#include <stdio.h>

#ifdef WIN32
#include <io.h>
#define dirent_t _finddata_t
#define DIR_T long
#define opendir( T, P ) _findfirst( T, &P )
#define readdir( T, P ) _findnext( T, &P )
#define closedir( T ) _findclose( T )
#define FOR_EACH_FILE( T, P ) while ( !readdir( T, P ) )
#define EXTRACT_FILE_NAME( T ) T.name
#else
#include <stddef.h>
#include <sys/types.h>
#include <dirent.h>
#define DIR_T DIR *
#define FOR_EACH_FILE( T, P ) while ( P = readdir( T ) )
#define EXTRACT_FILE_NAME( T ) T->d_name
#define dirent_t dirent*
#endif

int main()
{
   const char *dir_name = "*.*";
   dirent_t fData;
   DIR_T Directory = opendir (dir_name, fData);
   FOR_EACH_FILE( Directory, fData )
   {
       printf( "%s\n", EXTRACT_FILE_NAME( fData ) );
   }
   closedir(Directory);
   return 0;
}



под виндоуз работает, под линукс не пробовал но почти уверен что не работает smile))
немного попдравь пойдет как по маслу smile

Это сообщение отредактировал(а) azesmcar - 8.2.2005, 15:20
PM   Вверх
A...
Дата 8.2.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 5.10.2004
Где: Ереван

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



ок спасибо большое, если что не так напишу..smile
Заработала, но мне пришлось убрать второй аргумент в opendir()
Вот код

Код

#include <stdio.h>

#ifdef WIN32
#include <io.h>
#define dirent_t _finddata_t
#define DIR_T long
#define opendir( T, P ) _findfirst( T, &P )
#define readdir( T, P ) _findnext( T, &P )
#define closedir( T ) _findclose( T )
#define FOR_EACH_FILE( T, P ) while ( !readdir( T, P ) )
#define EXTRACT_FILE_NAME( T ) T.name
#else
#include <stddef.h>
#include <sys/types.h>
#include <dirent.h>
#define DIR_T DIR *
#define FOR_EACH_FILE( T, P ) while ( P = readdir( T ) )
#define EXTRACT_FILE_NAME( T ) T->d_name
#define dirent_t dirent*
#endif

int main()
{
   const char *dir_name = "/";
   dirent_t fData;
   DIR_T Directory = opendir (dir_name);
   FOR_EACH_FILE( Directory, fData )
   {
       printf( "%s\n", EXTRACT_FILE_NAME( fData ) );
   }
   closedir(Directory);
   return 0;
}


но думаю так в Windows - е не поидет..smile просто у меня нету Windows -а если можеш проверить проверь пожайлуста...

Спасибо...

Это сообщение отредактировал(а) A... - 8.2.2005, 16:20
--------------------
Особое спасибо Русскому языку за предоставленные буквы...
PM MAIL ICQ   Вверх
azesmcar
Дата 9.2.2005, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 81
Всего: 211



Код


#include <stdio.h>

#ifdef WIN32
#include <io.h>
#define dirent_t _finddata_t
#define DIR_T long
#define opendir( T, P ) _findfirst( T, &P )
#define readdir( T, P ) _findnext( T, &P )
#define closedir( T ) _findclose( T )
#define FOR_EACH_FILE( T, P ) while ( !readdir( T, P ) )
#define EXTRACT_FILE_NAME( T ) T.name
#else
#include <stddef.h>
#include <sys/types.h>
#include <dirent.h>
#define opendir( T, P ) opendir( T )
#define DIR_T DIR *
#define FOR_EACH_FILE( T, P ) while ( P = readdir( T ) )
#define EXTRACT_FILE_NAME( T ) T->d_name
#define dirent_t dirent*
#endif

int main()
{
  const char *dir_name = "*.*";
  dirent_t fData;
  DIR_T Directory = opendir (dir_name, fData);
  FOR_EACH_FILE( Directory, fData )
  {
      printf( "%s\n", EXTRACT_FILE_NAME( fData ) );
  }
  closedir(Directory);
  return 0;
}


Верно, в виндоуз не заработает...
Вот так работает нормально...пишешь еще один дефайн для линукс
Код

#define opendir( T, P ) opendir( T )

Чтобы в обоих случаях вызывался тот же макрос, но в одном случае он передаст второй параметр, в другом нет...под виндоуз так нормально работает...

Проверь, если что пиши в ICQ, 173549200
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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