Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помощь по работе с указателями / 17 сообщений из 17, страница 1 из 1
03.09.2007, 18:44:43
    #34772737
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
Почему функция GetInt не возвращает нужно значение?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
#include <stdio.h>
#include <conio.h>
#include <mem.h>
#include <stdlib.h>

#pragma hdrstop
#pragma argsused

int getInt(unsigned char* buff, int first, int count) {
	char tmp[ 16 ];
	memset(tmp,  0 ,  16 );
	for (int i =  0 ; i < count; i++) {
		tmp[i] = buff[i + first];
	}
	return atoi(tmp);
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
        unsigned char buff[ 16 ];
        memset(buff,  0 ,  16 );

	for (int x =  0 ; x <  15 ; x++)
	        buff[x] = x +  1 ;

         long res = getInt(buff, 0 , 3 );

        printf("%d", res);

        getch();
        return  0 ;
}
//---------------------------------------------------------------------------
...
Рейтинг: 0 / 0
03.09.2007, 19:54:27
    #34772829
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
Потому что char(1) - это это вообще непечатный символю
вместо вот этого buff[x] = x + 1;
напиши buff[x] = x + '1';
...
Рейтинг: 0 / 0
03.09.2007, 22:38:43
    #34772976
FullKettle_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
blindedПотому что char(1) - это это вообще непечатный символю
вместо вот этого buff[x] = x + 1;
напиши buff[x] = x + '1';
Ошибка точно не в этом. bгаа после цикла - "x01\x02\x03....."

Значение теряется при выходе из функции - передачи значения
...
Рейтинг: 0 / 0
04.09.2007, 00:15:01
    #34773041
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
FullKettle_ wrote:

> Ошибка точно не в этом. bгаа после цикла - "x01\x02\x03....."
>
Ошибка как раз таки в этом.
\x01 - это символ с кодом 01, а не буква '1'. Чем будет сивмол с кодом 01,
зависит от кодировки, в ms-dos это улыбающаяся рожица может быть, например.
Сделайте, как вам посоветовали x + '1';

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.09.2007, 12:09:20
    #34773959
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
Что должно получиться? 123?
ErVСделайте, как вам посоветовали x + '1';14+'1' – это скока?
...
Рейтинг: 0 / 0
04.09.2007, 12:24:55
    #34774037
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
maXmoЧто должно получиться? 123?
ErVСделайте, как вам посоветовали x + '1';14+'1' – это скока?
63
...
Рейтинг: 0 / 0
04.09.2007, 12:25:57
    #34774041
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
FullKettle maXmoЧто должно получиться? 123?
ErVСделайте, как вам посоветовали x + '1';14+'1' – это скока?
63

'14' - 49
49 + 14 = 63
...
Рейтинг: 0 / 0
04.09.2007, 15:19:36
    #34774800
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
Для бестиолковых
код 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
символ 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
...
Рейтинг: 0 / 0
04.09.2007, 15:37:59
    #34774895
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
blindedДля бестиолковых
код 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
символ 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
Это мы знаем


Код: plaintext
printf("%d",  14  + '1');
...
Рейтинг: 0 / 0
04.09.2007, 16:01:49
    #34775010
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
Тогда по-русски объясни чего хотел?
...
Рейтинг: 0 / 0
04.09.2007, 16:59:25
    #34775322
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
может, так?
Код: plaintext
1.
int num= 0 ;
for(int i= 0 ; i<count; i++) num=num* 10 +tmp[i];
...
Рейтинг: 0 / 0
04.09.2007, 18:59:58
    #34775697
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
maXmo wrote:

> 14+'1' ? это скока?
Это символ '?'.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
05.09.2007, 15:14:32
    #34778045
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
Что-то я не пойму: 0x48 и '0' - это одно и тоже?
...
Рейтинг: 0 / 0
05.09.2007, 16:06:30
    #34778318
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
0x30, 48 и '0'
...
Рейтинг: 0 / 0
05.09.2007, 16:07:20
    #34778322
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
цифарка цифарке рознь
...
Рейтинг: 0 / 0
05.09.2007, 18:34:22
    #34779030
FullKettle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
Поскажите функцию, обратную данной
Код: plaintext
sprintf((char*)buff, "%01x", value);
т.е. шестнадцатиричное в десятичное
...
Рейтинг: 0 / 0
05.09.2007, 19:14:48
    #34779183
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помощь по работе с указателями
sscanf
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помощь по работе с указателями / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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