kostenloser Webspace werbefrei: lima-city


C. Punkt aus Char löschen?

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    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?


  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    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
    \0
    um ein Byte nach vorne "verschieben" (falls der Text nicht gerade mehrere GB groß ist).
  4. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    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
    \0
    um ein Byte nach vorne "verschieben" (falls der Text nicht gerade mehrere GB groß ist).



    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
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    christian1603 schrieb:
    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.
    Wie wärs mit
    atof()
    ?
  6. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    hackyourlife schrieb:
    christian1603 schrieb:
    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.
    Wie wärs mit
    atof()
    ?


    soweit ganz gut. fürs Grobe reicht es erstmal... lässt halt die punkt bzw Komma stelle weg.
  7. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    christian1603 schrieb:
    soweit ganz gut. fürs Grobe reicht es erstmal... lässt halt die punkt bzw Komma stelle weg.
    Warum?
    float f = atof("1.02");
  8. i***********e

    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.
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!