itoa ist kein standard. wenn sprintf aus platzgründen ausscheidet, muss man sich selbst eine konvertierung basteln.
Code:
#include <stdio.h>
#include <conio.h> // nur für getch. kein ansi-standard.
void toascii(int i, char *a)
{
short int k=10000,n,pos=0;
if(i<0) // neg. vorzeichen
{
a[pos++]='-';
i*=-1;
}
else if (i==0) // wenn i=0 ist
{
a[pos++]='0';
a[pos]=0;
return;
}
while(i/k==0) // fuehrende nullen abschneiden
{
k/=10;
}
while(k) // konvertieren
{
n=i/k;
a[pos++]=n+'0';
i-=n*k;
k/=10;
}
a[pos]=0;
return;
}
int main(void)
{
char a[7];
toascii(-37656,a);
printf("%s",a);
getch();
return(0);
}
short ist hier ein 16bit int, das muss man an den controller anpassen. das char-array a muss gross genug sein, dass der int mitsamt vorzeichen und terminierender 0 reinpasst.
der code ist nur so hingeklatscht und nicht auf sicherheit optimiert (das heisst er läuft, aber bei falscher wahl von a,i,k können probleme auftreten). ist nur zum besseren verständnis gedacht.
anstelle von printf muss die textausgabe-funktion fürs LCD hin. sonst könnte man ja gleich mit %d den integer ausgeben.
gruesse von der katz
Lesezeichen