electrotehnik 0 18 октября, 2014 Опубликовано 18 октября, 2014 · Жалоба Здравствуйте подскажите начинающему, как конвертировать числовой тип данных в строчный, если типы данных в используемых мной библиотеках объявлены не стандартно. Существует функция вывода текста на экран: typedef unsigned char uint8_t; typedef unsigned short int uint16_t; void GUI_Text(uint16_t Xpos, uint16_t Ypos, uint8_t *str,uint16_t Color, uint16_t bkColor) { uint8_t TempChar; do { TempChar = *str++; PutChar( Xpos, Ypos, TempChar, Color, bkColor ); if( Xpos < MAX_X - 8 ) { Xpos += 8; } else if ( Ypos < MAX_Y - 16 ) { Xpos = 0; Ypos += 16; } else { Xpos = 0; Ypos = 0; } } while ( *str != 0 ); } И есть переменная, значение которой необходимо вывести на экран: float temp; temp = 345/16; Пробовал так: #include "stdlib.h" #include "string.h" float temp; uint8_t tpre; temp = 345/16; sprintf(tpre,"",temp) strcat(tpre, " C"); GUI_Text(10, 10, &tpre,White, Black) Результат отрицательный. Помогите советом, как сделать правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harvester 0 18 октября, 2014 Опубликовано 18 октября, 2014 · Жалоба Пробовал так: #include "stdlib.h" #include "string.h" float temp; uint8_t tpre; temp = 345/16; sprintf(tpre,"",temp) strcat(tpre, " C"); GUI_Text(10, 10, &tpre,White, Black) Результат отрицательный. Помогите советом, как сделать правильно? Во-первых sprintf формирует строку, а не целое. А во-вторых, где модификаторы формата? Должно быть что-то вроде char s[16]; sprintf(s,"%5.2f",temp); ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
electrotehnik 0 18 октября, 2014 Опубликовано 18 октября, 2014 · Жалоба аргумент функции отправки на дисплей, содержащий текст, должен быть типом uint8_t. а функция: sprintf(tpre,"%5.2f",temp); работает только с типом char. Вот и возникает вопрос как быть в таких случаях. И хоть uint8_t и есть переназванный char typedef unsigned char uint8_t; но все же является уже оригинальным типом данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harvester 0 18 октября, 2014 Опубликовано 18 октября, 2014 · Жалоба аргумент функции отправки на дисплей, содержащий текст, должен быть типом uint8_t. а функция: sprintf(tpre,"%5.2f",temp); работает только с типом char. Вот и возникает вопрос как быть в таких случаях. И хоть uint8_t и есть переназванный char typedef unsigned char uint8_t; но все же является уже оригинальным типом данных. Функция отправки на дисплей принимает в качестве аргумента указатель на uint8_t. Так что char s[16]; sprintf(s,"%5.2f",temp); GUI_Text(10, 10, (uint8_t *)s,White, Black) А вообще, рекомендую почитать Кернигана и Ритчи и разобраться в типах, массивах и указателях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
electrotehnik 0 18 октября, 2014 Опубликовано 18 октября, 2014 · Жалоба Спасибо большое! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться