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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 09:24     Преобразование char[256] в char* #1
Как преобразовать char[256] в char*?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
06.11.2011, 09:31     Преобразование char[256] в char* #2
Никак. Если я не ошибаюсь, то char* - это указатель на переменную, а char[256] - сама переменная.
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 09:39  [ТС]     Преобразование char[256] в char* #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;
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
06.11.2011, 09:43     Преобразование char[256] в char* #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);
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.11.2011, 09:44     Преобразование char[256] в char* #5
Цитата Сообщение от Frostegater Посмотреть сообщение
printf("%s", out);//а вот тут канает только char* out;
Это почему? char[256] out; тоже будет работать.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
06.11.2011, 10:15     Преобразование char[256] в char* #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;
}
у меня работает
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 10:46  [ТС]     Преобразование char[256] в char* #7
Хм... у меня почему-то крешится... ладно.. я уже другой выход нашёл.. всем спасибо.
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
06.11.2011, 10:48     Преобразование char[256] в char* #8
Frostegater, у Вас случайно не PSP-шный компилятор?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
06.11.2011, 10:51     Преобразование char[256] в char* #9
Цитата Сообщение от Frostegater Посмотреть сообщение
Хм... у меня почему-то крешится
может, функция sceIoRead не дописывает в строку символ '\0'?
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 11:02  [ТС]     Преобразование char[256] в char* #10
Цитата Сообщение от Евгений М. Посмотреть сообщение
Frostegater, у Вас случайно не PSP-шный компилятор?
Так и есть.. pspsdk... пишем плагин XMBControl v1.5, вот там после того как появилась PSPgo, появился новый стораж Extended Flash (ef0:/). Вот поэтому и необходимо сделать детект текущего стоража. А вот в чём загвоздка... При загрузе стороннего исполняемого файла PRX из буффера аргументы сходят на null. argp и argv[0] всё null, т.к. рузится то из буффера. Я нашёл таковой выход, записать из лоадера файл с путём (единственный "корневой" PRX, в котором арги пашут), а потом его читать сторонними. Хотел сперва ещё завязать на Kernel Stub's (експорты).. да подумал чё мозги *****.. ))) Сорри за ПСПдевский жаргон.

___
А вы под псп тоже писали?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
06.11.2011, 11:18     Преобразование char[256] в char* #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);
}
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
06.11.2011, 11:23     Преобразование char[256] в char* #12
Цитата Сообщение от Nameless One Посмотреть сообщение
если это так, то проблему можно решить двумя способами:
А можно полностью обнулить буфер перед записью
Nameless One
06.11.2011, 11:29
  #13

Не по теме:

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

Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
06.11.2011, 11:42     Преобразование char[256] в char* #14
Цитата Сообщение от Frostegater Посмотреть сообщение
А вы под псп тоже писали?
Нет. Вы в какой-то другой теме говорили про ef0:/, типа это PSP-шная вещь и в этой я увидел макросы, которые напоминают слово PSP. Ну вот я подумал, почему у Вас так странно ведет себя printf, когда по идее должна вести себя "как обычно".
В таком случае я советую обратиться в форум по pspsdk и узнать почему такое происходит.
Frostegater
6 / 6 / 0
Регистрация: 30.08.2011
Сообщений: 47
06.11.2011, 11:49  [ТС]     Преобразование char[256] в char* #15
Цитата Сообщение от Евгений М. Посмотреть сообщение
Нет. Вы в какой-то другой теме говорили про ef0:/, типа это PSP-шная вещь и в этой я увидел макросы, которые напоминают слово PSP. Ну вот я подумал, почему у Вас так странно ведет себя printf, когда по идее должна вести себя "как обычно".
В таком случае я советую обратиться в форум по pspsdk и узнать почему такое происходит.
printf - это pspDebugScreenPrintf(char *fmt, ...); =)
Icerfog
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 54
22.01.2015, 08:44     Преобразование char[256] в char* #16
Неужели, и правда невозможно преобразовать char[<const>] в char*? Я, например, пытался изменить адрес первого элемента массива на тот, который содержится в char*. Не работает, но не понимаю, почему. Потому, может, что каждый элемент массива содержит собственный адрес? Да вряд ли. Не уж-то никто не сталкивался?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
22.01.2015, 09:06     Преобразование char[256] в char* #17
Цитата Сообщение от Icerfog Посмотреть сообщение
Неужели, и правда невозможно преобразовать char[<const>] в char*?
Это реализованно на уровне компилятора и описанно в любой книге по сям.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2015, 10:06     Преобразование char[256] в char*
Еще ссылки по теме:

Преобразование в char C++
array char* to char* (значения массива указателей в один указатель) C++
Преобразование char в char* или разделить на две строки C++

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

Или воспользуйтесь поиском по форуму:
KOPOJI
Модератор
 Аватар для KOPOJI
16243 / 6454 / 390
Регистрация: 12.06.2012
Сообщений: 19,362
22.01.2015, 10:06     Преобразование char[256] в char* #18
Цитата Сообщение от Icerfog Посмотреть сообщение
каждый элемент массива содержит собственный адрес? Да вряд ли
Эмм.. А почему вряд ли?
Yandex
Объявления
22.01.2015, 10:06     Преобразование char[256] в char*
Ответ Создать тему
Опции темы

Текущее время: 22:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru