Point to a char array for displaying on LCD?
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2014-05-24 7:27 AM
Posted on May 24, 2014 at 16:27
Hi, i have a bmp085 bosch pressure&temp sensor, wich i want to show my data in format 4 degree
The raw readings are ok, i have the following code goinguint8_t tlsb;
uint8_t tmsb;
uint16_t temp;
char txt[10];
tmsb=i2c_rdack(I2C1);
tlsb=i2c_rdNack(I2C1);
temp=(tmsb<<8)+tlsb;
sprintf(txt,''%d'',temp); // converts int to string
char *ch1;
char *ch2;
char *ch3;
ch1=&txt[0];
ch2=&txt[1];
ch3=&txt[2];
UB_LCD_2x16_String(0,1,txt); // if i use only this, it shows me 254 value, wich is corect since i have 4 degree
but i wanna split the chars so i can add comma''.'', the result i wanted to be like this
UB_LCD_2x16_String(0,1,ch1); // displays first digit ( 2)
UB_LCD_2x16_String(0,1,ch2); // displays second digit (5)
UB_LCD_2x16_String(0,1,''.''); // displays only a dot (.)
UB_LCD_2x16_String(0,1,ch3); // displays the last digit (4)
The problem is at the pointing trough the txt char array. I`m not so familiar to standard c, used only mikroc builtin libs. Have any idea how to point
Thanks
#string #c-learning #c-string
This discussion is locked. Please start a new topic to ask your question.
3 REPLIES 3
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2014-05-24 8:12 AM
Posted on May 24, 2014 at 17:12
sprintf(txt,''%d.%d'',temp/10,temp%10); // converts 10x int to string
xx.x
Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Up vote any posts that you find helpful, it shows what's working..
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2014-05-24 11:28 AM
Posted on May 24, 2014 at 20:28
The the thing you need to remember is that a ''string'' in 'C' means ''an array of characters terminated by a NUL''
char txt[10];
char *ch1;
char *ch2;
char *ch3;
:
ch1=&txt[0];
ch2=&txt[1];
ch3=&txt[2];
So what this actually gives you, in a function expecting a
string, is a set of
strings starting at different points through the original string.
If txt is the string ''123'', then
ch1 isthe string ''123'';
ch2 isthe string ''23'';
ch3 isthe string ''3''.
''I`m not so familiar to standard c, used only mikroc builtin libs''
I can't imagine that this would be any different?
Here's some standard 'C' learning resources:
http://blog.antronics.co.uk/2011/08/08/so-youre-thinking-of-starting-with-c/
A complex system that works is invariably found to have evolved from a simple system that worked.
A complex system designed from scratch never works and cannot be patched up to make it work.
A complex system designed from scratch never works and cannot be patched up to make it work.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2014-05-25 7:19 AM
Posted on May 25, 2014 at 16:19
Not related to the display issue but
temp=(tmsb<<8)+tlsb;
Should be
temp=((uint16_t)tmsb<<8)+tlsb;
as tmsb is only 8 bits
