Dezimalpunkt durch Komma ersetzen

Persönliche Seite #1031819
Lesenswert?

Also ich würde den String Zeichen für Zeichen auswerten, und sobald das 
aktuelle Zeichen (z.B. stringvar[3]) ein . ist, würde ich dann eben in 
die Variable anstatt dem . ein , schreiben....
Hier mal ein Beispiel:
1
i=0;
2
while(stringvar[i] != ' ') //solange stringvar ein Zeichen ist
3
{ 
4
if(stringvar[i] == '.')  //Wenn stringvar ein . ist
5
{
6
stringvar[i] = ','; //Punkt durch Komma ersetzten
7
}
8
i++;
9
}

Müsste eigentlich so passen...

Gruß, Steffen
Moderator (Firma: Titel) Persönliche Seite #1032327
Lesenswert?

1
i=0;
2
while(stringvar[i] != ' ') //solange stringvar ein Zeichen ist
3
{ 
4
  if(stringvar[i] == '.')  //Wenn stringvar ein . ist
5
  {
6
     stringvar[i] = ','; //Punkt durch Komma ersetzten
7
  }
8
  i++;
9
}
Schau, schau, ein amoklaufender Pointer  :-o
>> solange stringvar ein Zeichen ist
Ein Leerzeichen ist ein gültiges Zeichen. In C ist ein String mit einer 
Null terminiert. Damit rennt i vorerst mal solange weiter, bis es auf 
ein 0x20 trifft. Und bis dahin werden alle Speicherzellen, in denen ein 
ein 0x2e enthalten ist, in 0x2c abgeändert.

Richtigerweise müsste das eher so heissen:
1
i=0;
2
while(stringvar[i] != '\0') //solange stringvar ein Zeichen ist
3
:
oder so:
1
i=0;
2
while(stringvar[i]) //solange stringvar ein Zeichen ist
3
:
Moderator Persönliche Seite #1032335
Lesenswert?

Oder in der C-typischen kryptischen Zeigerschreibweise:
1
while (char *cp = stringvar; *cp; cp++)
2
  if (*cp == '.') *cp = ',';

(Die Deklaration der Variablen innerhalb der for-Anweisung braucht
-std=c99 oder -std=gnu99.)

Optional auch nur den ersten Punkt ersetzen:
1
while (char *cp = stringvar; *cp; cp++)
2
  if (*cp == '.') {
3
    *cp = ',';
4
    break;
5
  }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren