Vraag & Antwoord

Programmeren

Integer naar Unsigned char met Fprint hoe doe je dit in C??

3 antwoorden
  • Beste mensen, Ik ben al uren bezig een manier te vinden om een integer met sprintf om te zetten naar een unsigned char. Het probleem is als volgt: Naar een display kan ik alleen karakters van het datatype unsigned char schrijven. Nu wil ik een getalletje in het display laten oplopen tussen 0 en 30. Ik heb al het volgende gemaakt wat werkt: [color=blue:e3445ebe4b]sprintf(marge_waarde, "-%02dV-", marge);[/color:e3445ebe4b] waarbij: [color=blue:e3445ebe4b]int marge = 5; unsigned char marge_waarde[5];[/color:e3445ebe4b] Echter krijg ik een hele vervelende warnig van mijn compiler waardoor het totale programma niet meer goed werkt :cry: Ik hoop dat iemand weet hoe ik deze warning op kan lossen en zorgen dat de code goed werkt. Ik gebruik het programma AVR studio 4 met een ATMEGA32 [color=red:e3445ebe4b]../Menu.c:358: warning: pointer targets in passing argument 1 of 'sprintf' differ in signedness [/color:e3445ebe4b]
  • Die warning komt omdat de eerste parameter van sprintf (marge_waarde) van het type unsigned char* is terwijl sprintf een char* verwacht. Daarom geeft hij een warning. Nu zou dat niet zo'n probleem moeten zijn. Het zou gewoon moeten werken. Ik denk dat het probleem eerder is dat je een uitvoer geeft in de vorm van 5 tekens en die opslaat in een 5 byte grote buffer, en dat is te weinig omdat er nog een eind-0 achteraankomt. Dus je moet die marge_waarde een grootte van 6 geven. Als je last hebt van de warning kun je die sprintf veranderen in [code:1:6a8645d22b]sprintf((char*) marge_waarde, "-%02dV-", marge);[/code:1:6a8645d22b] Dan cast je die marge_waarde naar char*.
  • Dankjewel dit werkt goed!!!!:D Ik heb echer nog een vraag misschien dat je deze ook weet.. Ik lees m.b.v I2C een Real Time clock uit. Ik kan 8 bytes ontvangen van het type unsigned char waar dan de seconden, minuten, uren, dagen, maanden enz in staan. Deze bytes kan ik ook moeiteloos via Uart naar Hyperterminal sturen om deze te checken... Nu heb ik een menu structuur gemaakt met een display en een keypad waar je 6 integer variabelen kan wijzigen namelijk: uren:minuten dag/maand/jaar. Ten eerst zou ik graag de unsigned char bytes die ik van de klok ontvang netjes met fprintf op het display schrijven. Dit lukt me helaas nog steeds niet.. :( Ook moet het mogelijk zijn dat de integers (die je in het menu kan veranderen) worden omgezet naar een unsigned char zodat ik deze naar de Real Time Clock kan sturen om zo de datum/tijd te wijzigen.... Conclusie: [color=green:5ecd42b468]-Hoe zet je een ontvangen unsigned char om in een string formaat die ik naar het display kan sturen (het display kan alleen het type unsigned char ontvangen)[/color:5ecd42b468] [color=green:5ecd42b468]- Hoe zet je een integer om naar een unsigned char om deze vervolgens naar de klok te sturen.[/color:5ecd42b468]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.