C. Punkt aus Char löschen?
lima-city → Forum → Programmiersprachen → C/C++ und D
buffer
byte
code
entfernen
ersetzen
feld
geschwindigkeit
knoten
komma
modul
nehmen
punk
punkt
speichern
string
test
text
url
verschieben
wandel
-
Hei LC,
ich möchte einen "Punk" (.) aus einem Char löschen.
Hier mein Code:
void replace(char* buffer, char search, char replacement) { if( !buffer ) return; while( buffer=strchr(buffer,search) ) *buffer++=replacement; } int main() { char test[]="Servus\r\ntest"; /* 53 65 72 76 75 73 0a 0d 74 65 73 74 00 */ replace(test, '.', ' '); puts(test); // 53 65 72 76 75 73 20 20 74 65 73 74 00 return 0; }
Das geht soweit... kann ihn aber nur ersetzen mit einem Leerzeichen... es soll aber nur gelöscht werden.... habe einfach 0 oder '\0' versucht aber dann wird ab dem Punkt alles gelöscht.
Kann mir wer helfen?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Löschen funktioniert nicht ohne weiteres, weil dadurch der Text im Speicher verschoben werden muss… was du machen kannst: den Text durchlaufen und bei jedem
alles Nachfolgende bis zum.
um ein Byte nach vorne "verschieben" (falls der Text nicht gerade mehrere GB groß ist).\0
-
hackyourlife schrieb:
Löschen funktioniert nicht ohne weiteres, weil dadurch der Text im Speicher verschoben werden muss? was du machen kannst: den Text durchlaufen und bei jedem
alles Nachfolgende bis zum.
um ein Byte nach vorne "verschieben" (falls der Text nicht gerade mehrere GB groß ist).\0
Hei,
ich habe jetzt:
char *ptr; int i; for(i=0;item[i]!='\0';i++){ if(item[i]=='.'){ ptr=&item[i+1]; item[i]=0; strcat(item,ptr); i--; } }
was zwar klappt mir bei meinem Eigentlichen Problehm nicht hilft.
Ich habe ein Char parseNMEAitem(item, 7); der mir aus einem GPS Modul die Geschwindigkeit ausgibt.
z.b so: 1.02
Dies is aber in Knoten nicht in KM/H.
Jetzt will ich dies umrechnen und wandel wollte den Punkt entfernen.... das ganze in INT umwandel und mal 1,852 nehmen.
aber jeder versuch ist gescheitert... jetzt hab ich zwar den Punk weg aber wenn ich das in INT umwandel kommt da stadt 0 z.b 158 raus...
Edit
Also aus Char item = 1.00
soll int: 1,852 werden...
Beitrag zuletzt geändert: 19.2.2013 21:20:34 von christian1603 -
christian1603 schrieb:
Wie wärs mit
Ich habe ein Char parseNMEAitem(item, 7); der mir aus einem GPS Modul die Geschwindigkeit ausgibt.
z.b so: 1.02
Dies is aber in Knoten nicht in KM/H.
Jetzt will ich dies umrechnen und wandel wollte den Punkt entfernen.... das ganze in INT umwandel und mal 1,852 nehmen.
?atof()
-
hackyourlife schrieb:
christian1603 schrieb:
Wie wärs mit
Ich habe ein Char parseNMEAitem(item, 7); der mir aus einem GPS Modul die Geschwindigkeit ausgibt.
z.b so: 1.02
Dies is aber in Knoten nicht in KM/H.
Jetzt will ich dies umrechnen und wandel wollte den Punkt entfernen.... das ganze in INT umwandel und mal 1,852 nehmen.
?atof()
soweit ganz gut. fürs Grobe reicht es erstmal... lässt halt die punkt bzw Komma stelle weg. -
christian1603 schrieb:
Warum?
soweit ganz gut. fürs Grobe reicht es erstmal... lässt halt die punkt bzw Komma stelle weg.float f = atof("1.02");
-
In C kann man schon einen String Zeichenweiße verändern bzw. manipulieren. Einfach wie es der @christian1603 schon beschrieben hat mit dem Index Operator das Feld durchgehen und einfach die Sachen ersetzen die du nicht in den String haben möchtest. Es gibt auch eine Funktion, bei der Doppelte Leerzeichen zu einem zusammengefasst werden, aber mir ist leider der Name entfallen.
Also einfach das Feld durchgehen, dann das Zeichen ersetzen und mit der Funktion weiterarbeiten. :)
Fred. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage