Hoe kan ik zoeken op welke positie de punt staat van deze string "12.34" ?
Het uiteindelijke doel is om het getal 12.34 te splitsen in het hele getal 12 en de cijfers achter de komma 34 en deze uitkomsten op te slaan als 2 integers.
Jochem
If you want to succeed, double your failure rate.
Afhankelijk van de library die je beschikbaar hebt zou je bijvoorbeeld strchr() kunnen gebruiken, maar weer niet hoe dat in mikroC zit.
Is een rekenkundige oplossing geen optie?
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Zoiets, misschien:
char de_string[16] = "12.34";
char *pointer;
int eenheden, honderdsten;
eenheden = atoi(de_string);
pointer = de_string;
while ((*pointer != 0) && (*pointer != '.')) {
pointer++;
}
if (*pointer == 0) { // Geen punt aanwezig
honderdsten = 0;
} else {
pointer++; // '.' overslaan
honderdsten = atoi(pointer);
}
Je kan ook met een for lus de string afgaan en ieder karakter uit de string scannen en ondertussen een tellertje laten optellen iedere keer als het karakter geen '.' is.
Dat is het principe hé, een beetje zoals Pros dus maar anders 
Jochem
If you want to succeed, double your failure rate.
Zo'n beetje precies wat pros doet. Z'n teller is gewoon gelijk de pointer, en in plaats van een for-lus een while (veel slimmer, want je wilt toch eerder ophouden met tellen).
Alleen als mikroC de string-libraries heeft hoef je dit wiel niet opnieuw uit te vinden. Ander argument is wel dat je met de hele string-libs meer code toevoegt als nodig, wat in een embedded systeem niet altijd wenselijk is. Veel compacter dan de code van pros zal het niet worden.
Vannavond kan ik weer het een en ander testen.
Ik ben al druk aan het zoeken geweest in de manual, en heb al meerdere commando´s geprobeerd, maar het werkt maar niet.
http://www.mikroe.com/pdf/mikroc/mikroc_manual.pdf
[Bericht gewijzigd door MMSoft op (12%)]
De code werkt !
De variable "de_string[16]"
Wil ik pas later een karakter reeks toekennen, maar met onderstaande regel krijg ik een fout melding:
de_string = "12.34"; //Deze regel geeft een fout melding: Assigning to non-lvalue[]
Ook begrijp ik nog niet zogoed wat nu eigenlijk het verschil is tussen een "String" (dus een karakter reeks) en een "*pointer"
Ik was van tevoren bezig geweest met de commando's:
memcmp
memcpy
memmove
memset
memchr
strcat
strchr
strcmp Vergelijkt een string met een andere
strcpy
strlen
strncat
strncpy
strspn
strcspn Doorzoekt een string
strncmp
strpbrk
strrchr
strstr
strtok
Maar daar werd ik niet veel wijzer van.
Kan iemand iets vertellen over deze commando's
(ik heb natuurlijk als in de manual gezocht, maar wordt er nog niet veel wijzer van)
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Karakters in een string plaatsen:
#include <string.h>
strcpy(de_string, "12.34"); // String is nu "12.34"
// String aanvullen
de_string[0] = 0; // String is nu leeg
strcat(de_string, "12."); // String is nu "12."
strcat(de_string, "34"); // String is nu "12.34"
int eenheden = 12;
int honderdsten = 34;
sprintf(de_string, "%d.%02d", eenheden, honderdsten); // String is nu "12.34"
// Let hierbij op "%02d" Als honderdsten '5' is, komt er netjes "05" in de string te staan.
// Wil je duizendsten, dan maak je daar "%03d" van
Verder moet ik Henry's raad volmondig beamen.