Bernhard Peissl: C++ (fscanf)

Beitrag lesen

Grüssi!

Date;Wert1;Wert2;...
1.99;45776;76887;...
2.99;65858986;98797;...

Wie kann ich das Programm schreiben, das es nicht die Leerzeichen als Ende bzw.
Anfang der strings erkennt, sondern die ";" SEMIKOLONS.

Du kannst die Datei zeilenweise einlesen (fgets) und dann bei ';' splitten (strtok):

FGETS:
while (fgets(line,sizeof(line),sf) != NULL) { [...] }
http://www.cplusplus.com/ref/cstdio/fgets.html

STRTOK:
for (p=strtok(line, SEPERATORS); p!=NULL; p=strtok(NULL,SEPERATORS)) { [...] }
http://www.cplusplus.com/ref/cstring/strtok.html

Da C++ schon ein paar Jährchen zurückliegt kann ich nix garantieren, und C liegt noch einige Jährchen mehr zurück ;-) Und da ich weder C noch C++ Compiler habe, hab ich es in php ausprobiert ;-)

<?

$string = "This;is;an;example;string";
$tok = strtok ($string,";");
// Hier wird der String gesplittet in "This" und "is;an;example;string"
while ($tok) { // solange es ein $tok gibt das != NULL ist
    echo "Word=$tok<br>";  // beim ersten durchlauf: "This"
    $tok = strtok (";");   // 1. Durchlauf: "is;an;example;string" wird gesplittet
                           // in "is" und "is;an;example;string"
                           // Beim 2. DL wird "is" ausgegeben, und der String weiter gesplittet
}
?>

In C/C++ gehts genauso. Wichtig ist nur, dass zweimal gesplittet wird!

lg bernhard