Hi-Tech C sprintf - retezec v retezci

Zdravim vas,

mam tento kod:

char t],string];

sprintf(t,"-%d.%d",10,5); // vytvori textovy retezec "-10.5"
sprintf(string,"T: %s C",t); // mel by vytvorit textovy retezec "T: -10.5 C", ale nevytvori :(

lcdPrintString(2,string); // mel by vytisknout retezec v promenne string na druhy radek displeye, ale nevypise nic

Nevite kde by mohla byt chyba? Predpokladam, ze to je zpusobeno tim 2. sprintf, ale jak to udelat, aby to spravne dosadil?

A vypisuje to nějákou chybu?
Není jednoduší to udělat takto:

[code]
int a = 10;
int b = 5;

sprintf(string,“T: -%d,%d°C”,a,b);[/code]

Takto to taky funguje, v string máš T: -10,5 C

[code]#include <htc.h>
#include <stdio.h>

void main(void)
{
char t[20],string[20];

while(1)
{
	sprintf(t,"-%d.%d",10,5); 
	sprintf(string,"T: %s C",t);
}       

}[/code]

Tak bohuzel, chybu to zadnou nevypisuje, kompilator to skompiluje, ale na dislayi se nic nevypisuje.

Co se tyka toho prvniho “jednodussiho” reseni, tak to mam takto ted resene, ale to je dobre jen v pripade kdy mam jednu hodnotu, ale kdyz chci zobrazit napr. 3 hodnoty, ktere bych chtel mit v jedno retezci tak toto reseni je lepsi.

Co se tyka toho druheho reseni, tak v tom nevidim zadny rozdil oproti tomu co jem sem dal ja teda s tim rozdilem, ze pole ma urcity pocet prvku.

To jsem zkoušel jestli to funguje a funguje :slight_smile: Nemáš botu někde s LCD, co ti ukazuje?

Tak kdyz dam

sprintf(t,"-%d.%d",10,5);

lcdPrintString(2,t);

tak display zobrazi spravne text “-10.5” na druhem radku displaye.

Jinak tu funci pro vypsani retezce na display mam takto:

[code]
void lcdPrintString(char row,const char text) {
char byte1, byte2;
if (row == 1) {
byte1 = 0xE2;
byte2 = 0xC2;
} else {
byte1 = 0xF2;
byte2 = 0xC2;
}
__delay_ms(1);
lcdSet(byte1,byte2);
char i = 0;
while(text
!= 0) {
__delay_ms(1);
lcdPrintChar(text*);
i++;
}
while (i < 16) {
__delay_ms(1);
lcdPrintChar(’ ');
i++;
}
}

[/code]**

Beru zpet, mas pravdu uz to funguje, problem je v tom a tomu nejak nerozumim, ze jsem nemel nadefinovane pocet prvku v tom poli, mel jsem za to ze to neni potreba, ze s tim pracuje dynamicky.

Dekuji :slight_smile:

Nemáš zač :slight_smile: Taky jsem si hrál s LCD, je to ale dva měsíce zpět a jak jsem se navztekal

Tak ja jsem se kupodivu ani tak netrapil na programovani jako spise na nepozornosti misto TRISA jsem mel treba TRISB :wink: Chbyama se clovek uci.

Njn, naposled jsem řešil, že mi převodník blbě převádí a bylo to tím, že jsem ve while měl inicializaci převodníku, stačilo ju dát před a funguje to nádherně. To byla chyba, která mě vůbec nenapadla, že to tak může vadit.