Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
#1

Преобразование char[256] в char* - C++

06.11.2011, 09:24. Просмотров 1227. Ответов 17
Метки нет (Все метки)

Как преобразовать char[256] в char*?
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 09:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование char[256] в char* (C++):

Сделать преобразование unsigned char в char, а затем типу int - C++
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...

Преобразование char в char* или разделить на две строки - C++
Пытаюсь сделать программу под linux. Возникла проблема, описанная в заголовке. Мне нужно разделить строку в char на две по символу ? либо...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...

Преобразование к char* - C++
Переведите, пожалуйста, на русский язык, что значит эта строчка: (char*)&amp;var Если я правильно понимаю, то это: &quot;передать как...

Преобразование в char - C++
Добрый вечер. Как сделать, чтобы работало: fstream outStream; double z, dz; ... outStream.open(&quot;points/&quot; + (char)(z/dz) + &quot;.txt&quot;,...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
06.11.2011, 09:31 #2
Никак. Если я не ошибаюсь, то char* - это указатель на переменную, а char[256] - сама переменная.
1
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 09:39  [ТС] #3
Цитата Сообщение от programina Посмотреть сообщение
Никак. Если я не ошибаюсь, то char* - это указатель на переменную, а char[256] - сама переменная.
Ну вот к примеру код.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
    char out[256];
    SceUID fd = sceIoOpen("С:/file.dat", PSP_O_RDONLY, 777);
    if(fd > 0)
    {
        int size = sceIoLseek(fd, 0, PSP_SEEK_END);//перемещение к конечному адресу файла для определения размра.
        sceIoLseek(fd, 0, PSP_SEEK_SET);//в начало файла
        sceIoRead(fd, &out, size);//чтение
 
        int i;
        for(i = 0; i < size; i++)
            msglog("%c", out[i]);//вывод массива по очереди
    }
    sceIoClose(fd);
А мне хочется выводить вот так...

C
1
printf("%s", out);//а вот тут канает только char* out;
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
06.11.2011, 09:43 #4
Цитата Сообщение от Frostegater Посмотреть сообщение
а вот тут канает только char* out
да ладно?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
    char c[256];
    strcpy(c, "Hello, World!");
 
    printf("%s\n", c);
        
    exit(0);
}
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.11.2011, 09:44 #5
Цитата Сообщение от Frostegater Посмотреть сообщение
printf("%s", out);//а вот тут канает только char* out;
Это почему? char[256] out; тоже будет работать.
1
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
06.11.2011, 10:15 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <conio.h>
 
int main()
{
    FILE* fd = fopen("test.txt", "rt");
    int size = 100;
    int i = 0;
    char out[256];
 
    for(i = 0; i < size; i++)
    {
        fscanf( fd, "%c", &out[i] );
        printf("%c\n", out[i]);
    }
 
    fclose(fd);
    getch();
    return 0;
}
у меня работает
1
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 10:46  [ТС] #7
Хм... у меня почему-то крешится... ладно.. я уже другой выход нашёл.. всем спасибо.
0
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
06.11.2011, 10:48 #8
Frostegater, у Вас случайно не PSP-шный компилятор?
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
06.11.2011, 10:51 #9
Цитата Сообщение от Frostegater Посмотреть сообщение
Хм... у меня почему-то крешится
может, функция sceIoRead не дописывает в строку символ '\0'?
1
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 11:02  [ТС] #10
Цитата Сообщение от Евгений М. Посмотреть сообщение
Frostegater, у Вас случайно не PSP-шный компилятор?
Так и есть.. pspsdk... пишем плагин XMBControl v1.5, вот там после того как появилась PSPgo, появился новый стораж Extended Flash (ef0:/). Вот поэтому и необходимо сделать детект текущего стоража. А вот в чём загвоздка... При загрузе стороннего исполняемого файла PRX из буффера аргументы сходят на null. argp и argv[0] всё null, т.к. рузится то из буффера. Я нашёл таковой выход, записать из лоадера файл с путём (единственный "корневой" PRX, в котором арги пашут), а потом его читать сторонними. Хотел сперва ещё завязать на Kernel Stub's (експорты).. да подумал чё мозги *****.. ))) Сорри за ПСПдевский жаргон.

___
А вы под псп тоже писали?
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
06.11.2011, 11:18 #11
Цитата Сообщение от Nameless One Посмотреть сообщение
может, функция sceIoRead не дописывает в строку символ '\0'?
если это так, то проблему можно решить двумя способами:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define SIZE 600
 
int main(void)
{
    char c[SIZE];
    size_t cnt = fread(c, 1, SIZE, stdin);
 
    fwrite(c, 1, cnt, stdout);  /* воспользоваться двоичным выводом */
 
    printf("%.*s", cnt, c); /* указать спецификатор точности
                 * для форматного вывода */
                    
    exit(0);
}
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
06.11.2011, 11:23 #12
Цитата Сообщение от Nameless One Посмотреть сообщение
если это так, то проблему можно решить двумя способами:
А можно полностью обнулить буфер перед записью
1
Nameless One
06.11.2011, 11:29
  #13

Не по теме:

Цитата Сообщение от fasked Посмотреть сообщение
А можно полностью обнулить буфер перед записью
точно

0
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
06.11.2011, 11:42 #14
Цитата Сообщение от Frostegater Посмотреть сообщение
А вы под псп тоже писали?
Нет. Вы в какой-то другой теме говорили про ef0:/, типа это PSP-шная вещь и в этой я увидел макросы, которые напоминают слово PSP. Ну вот я подумал, почему у Вас так странно ведет себя printf, когда по идее должна вести себя "как обычно".
В таком случае я советую обратиться в форум по pspsdk и узнать почему такое происходит.
0
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 11:49  [ТС] #15
Цитата Сообщение от Евгений М. Посмотреть сообщение
Нет. Вы в какой-то другой теме говорили про ef0:/, типа это PSP-шная вещь и в этой я увидел макросы, которые напоминают слово PSP. Ну вот я подумал, почему у Вас так странно ведет себя printf, когда по идее должна вести себя "как обычно".
В таком случае я советую обратиться в форум по pspsdk и узнать почему такое происходит.
printf - это pspDebugScreenPrintf(char *fmt, ...); =)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 11:49
Привет! Вот еще темы с ответами:

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( - C++
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...

Ошибка: call of overloaded 'strchr(char&, char)' is ambiguous - C++
Здравствуйте, прога почему-то ругается на функцию strchr, вот кусок кода: #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

Различное поведение функции которая копирует строки с char* t и char t[] - C++
столкнулся с ситуацией которую не могу объяснить пишем функцию которая копирует одну строку в другую: void strstr(char* t,...

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть сложить строки и назначить результату...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.11.2011, 11:49
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru