реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> в строковую переменную поместить число
sergey sva
сообщение Feb 21 2012, 18:19
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Что то из головы вылетело, как в строковую переменную вписать число?
sprintf( "abcdr0x41ddddd %d"....)
нужно что бы число 0x41 вставилось как символ.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Feb 21 2012, 18:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



sprintf( "abcdr\101ddddd %d"....)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 21 2012, 23:58
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



sprintf( "abcdr\x41ddddd %d"....)


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Feb 22 2012, 10:44
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Сергей Борщ @ Feb 22 2012, 03:58) *
sprintf( "abcdr\x41ddddd %d"....)

Так не получится: за "41" следует "маленькая кучка" символов "d", коротые будут восприняты как продолжение шестнадцатиричного числа...
Go to the top of the page
 
+Quote Post
ReAl
сообщение Feb 22 2012, 10:59
Сообщение #5


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Код
sprintf( "abcdr\x41" "ddddd  %d"....)

и пусть компилятор склеивает строки.
А ещё, на мой взгляд, правильнее так:
Код
#define STR_MY_CONTROL_SYMBOL "\x41"
sprintf( "abcdr" STR_MY_CONTROL_SYMBOL "ddddd  %d"....)

Ну в смысле так :-)
CODE
#define STRINGFY_(x) #x
#define STRINGFY(x) STRINGFY_(x)

#define STR_RESET "\x1B" "c"
#define STR_HOME_CLR "\x1B[2J"
#define STR_ATTR_OFF "\x1B[m"
#define STR_ATTR_BOLD "\x1B[1m"
#define STR_ATTR_UNDERLINE "\x1B[4m"
#define STR_ATTR_REVERSE "\x1B[7m"
#define STR_ATTR_BOLD_REVERSE "\x1B[1;7m"
#define STR_SCROLL_FROM(from) "\x1B[" STRINGFY(from) "r"
#define STR_GO_LP(line,pos) "\x1B[" STRINGFY(line) ";" STRINGFY(pos) "H"
// ну тут ещё всякое

#define SCROLL_BEGIN 19
#define SCROLL_END 24

// Это собирается _одна_ длинная строка и одним оператором отправляется в порт
uart << STR_RESET // Reset terminal (attributes, scroll area & so on)
STR_HOME_CLR // Clear screen and go home
"scmRTOS sample 4-Debug\n"
STR_ATTR_BOLD_REVERSE // set header attributes
"Process\tStack\tCPU%\n"
STR_ATTR_OFF // clear attributes
STR_SCROLL_FROM(SCROLL_BEGIN)
STR_GO_LP(SCROLL_END,1) // cursor to bottom of screen (and scroll area)
;


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Feb 22 2012, 11:22
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Цитата
и пусть компилятор склеивает строки.
А ещё, на мой взгляд, правильнее так:

Спасибо сейчас попробую так сделать.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th September 2025 - 17:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.06719 секунд с 7
ELECTRONIX ©2004-2016