powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как преобразовать CHAR [260] в char
21 сообщений из 21, страница 1 из 1
Как преобразовать CHAR [260] в char
    #32840544
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо!
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32840603
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronБольшое спасибо!
Большое пожалуйста.
А если серьезно, то не понятна суть вопроса (откуда и куда преобразовывать), так как char[260] есть суть 260 char'ов и никаких преобразований вроде бы не требуется:

char CHAR[260];
char bukva;
int index=0;
......
bukva=CHAR[index];
...

или я чего-то не понимаю?
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32840627
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может нужна хэш-функция, которая по char[260] выдаёт одну букву? :)

Или может надо char[260] перегнять в char* ?
Тогда надо просто перед именем масива выставить (char*)

Иначе, в рамках топика, такое преобразование без потерь данных невозможно.
По кр. мере в виндах.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32841180
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь решить задачу, где надо пройтись и собрать в массиве все названия файлов:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
		CHAR w[ ]; 
		WIN32_FIND_DATA ffblk; 
		HANDLE hFF; 
		//printf("Directory listing of *.*\n"); 
		hFF = FindFirstFile("*.lsp",&ffblk); 
		int i =  0 ;
		while (GetLastError() != ERROR_NO_MORE_FILES) 
		{ 
			//printf(" %s\n", ffblk.cFileName); 
			w[ i ] = ffblk.cFileName;
			FindNextFile(hFF,&ffblk); 
			i++;
		}

Компилятор ругается на место передачи названия файла в массив w[ i ] = ffblk.cFileName. Как ещё можно указать директорию где просматривать файлы?
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32841343
13th_apostle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я молод, горяч и могу ошибатья =))), но:
Код: plaintext
w[ i ] = ffblk.cFileName;
imho, выдает ошибку вполне естественно, т.к. char = char[] не прокатит никак.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32841438
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 13th_apostle:
Да, ошибка выдаётся. Я как раз и ищу ответа на вопрос как можно заполнить массив.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32841529
13th_apostle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ты хочешь найти все директории, где лежат файлы *.lsp?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 
WIN32_FIND_DATA ffblk; 
HANDLE hFF; 
hFF = FindFirstFile("*.lsp",&ffblk); 
while (GetLastError() != ERROR_NO_MORE_FILES) 
{ 
   char * path = new char[ 260 ];
   path = ffblk.cFileName.c_string();
   FindNextFile(hFF,&ffblk); 
  /*тут обрабатываешь path: передаешь куда-нибудь или сохраняешь куда-нибудь*/
  delete path;
}
не уверен, что прокатит. более того, массив каждый раз перезаписывается. так что можно создать 2х-мерный массив. что тоже, imho, не есть good.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32841530
Alex_VC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала надо объявить не массив из 260-ти символов, а массив указателей на 260 строки (как я понял)
char (*w)[]; //кажется так(точно не помню,как обявить массив указателей)
Перед присвоением w[ i ] = ffblk.cFileName; не мешало бы выделить памяти
w =(char*)malloc(strlen(ffblk.cFileName)*sizeof(char));
Ну а после нужно память освободить
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32841702
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
ИМХО

1) Если это С++, то зачем malloc а не new?
2) почему такая приверженность к char*? если заюзать std::string то можно избежать лишней возни с кучей
3) вместо массива можно заюзать std::vector, но только если нужен random-access доступ, если запись и чтение происходят последовательно от начала к концу - тогда можно и stringstream заюзать. вобчме надо юзать типы, которые в случае исключение нормально освобождают ресурсы при раскрутке стека. Иначе у тебя приложение "зарастет" лесом try catch.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32842068
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача у меня стоит такая, чтобы указать в коде директорию, где искать нужный тип файлов.
Пишу на VS.NET Managed C++.
Вариант подойдёт любой, так как главное для меня, чтобы работало, так как сам в С++ отнюдь не гуру и привередничать точно не буду по поводу оптимального решения :)
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32842074
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13th_apostle, мне все названия файлов надо запихнуть в массив бы.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32842156
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
char src[260];
char dst;
// преобразование
dst = src[ /*ну например*/ 25 ];
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32842188
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видешь ли, тебе
CHAR w[ ];
не подойдет.
Это массив символов, т.е. почти то же, что и CHAR*.

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

В зависимости от того, какие библиотеки ты используешь, тебе
и нужно выбирать, возможно это был бы

std::vector<std::string>
или
CStringArray из MFC
.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32842353
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
управляемый С++ это совсем другой С++. Это просто полный атас - сплошные оговорки. Хотя по твоему коду не скажешь что у тебя управляемый С++. Хотя бы вызов FindFirstFile, я новичок в NET, но я не припомню неймспейса с такой функцией. Это чистаганом win32.

Да и массивы в управляемом С++ надо объявлять с префиксом gc. И тип строковый там свой String
Код: plaintext
1.
2.
3.
int NumArray __gc[] = new int __gc[ 5 ];
for(int i= 0 ;i< 5 ;i++)
    NumArray[i]=i;
если мы будем юзать new без __gc тогда будет создан указатель "неуправляемый". Да и классы ты тоже должен будешь оборачивать в __gc
Код: plaintext
1.
2.
3.
4.
__gc class C{
char a __gc[ 10 ];
char b __nogc[ 10 ];
}
если объявлять без префикса внутри управляемого класса компилер даст ошибку. В случае с struct такого делать не надо. Кстати, если структура или класс уже объявлены с нужным префиксом, то писать егео перед new не надо.

О компиляторе, он должен быть вызван с параметром /clr а в начале проекта стоять
Код: plaintext
1.
2.
#using <mscorlib.dll>
using namespace System;

все это есть в MSDN.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32842354
13th_apostle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivА тебе нужен массив переменной размерности, содержащий строки
истину глаголит. =) ибо в 1мерный массив символов запихать названия нес-ких директорий при определенном желании можно. но не стоит. =)
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32845348
Sie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sie
Гость
А я бы вообще такую фигню сделал:

завёл бы лист-вью и добавлаял бы итемы

LVITEM li;
li.mask = LVIF_TEXT;
....

li.pszText = ffblk.cFileName;
li.iSubItem = 0;
ListView_InsertItem(hListView,&li);

;)

Это чтобы про аллокацию не думать...

может я молод и горяч, но я так часто делал и перекладывал аллокацию памяти на спину Win32 (разные контролы, в зависимости от ситуации), заодно потом по убийству контрола, оно само память освобождает ;)

Вот такой я хитрый гат.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32845534
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делайте проще, заведите массив указателей на массивы из символов
char **ppNames;
и не надо выпендриваться :)
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32845539
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
недеюсь все помнят такую фишку:
int main(int argc, char **argv ) {...
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32846773
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanделайте проще, заведите массив указателей на массивы из символов
char **ppNames;
и не надо выпендриваться :)


Завести -то можно, да только память выделять-перевыделять потом заколебешся.
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32846815
13th_apostle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а чем не устраивает
MasterZivstd::vector<std::string> ??
...
Рейтинг: 0 / 0
Как преобразовать CHAR [260] в char
    #32852262
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо люди за помощь! Но пока я не чувствую, что готов ввязаться из С# в С++, потому отложу на время задачу. Всех с Наступающим! :)
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как преобразовать CHAR [260] в char
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]