Wie zum überspringen der Leerzeichen in einem string, während das Lesen aus einer Datei
Will ich Lesen 20-Zeichenfolgen aus einer Datei, die möglicherweise oder möglicherweise nicht enthalten Leerzeichen.Diese Zeichenfolgen sind in aufeinander folgenden Zeilen in einer Datei. Erstellen Sie ein Zeichen-array aus einer Linie, die enthalten keine Leerzeichen. Wie macht man das?
zB:
aaa bbbbccc
abcedefghij
und so weiter.
Ich will ein char-array, die diese Elemente, {a,a,a,b,b,b,b,c,c,c}
ein weiteres array mit {a,b,c,d,e,f,g,h,i,j}
Kann ich sscanf
?
- So dass Sie wollen, um jedes Zeichen in ein array, aber überspringen der Leerzeichen?
- aaa bbbbccc ist in einer Zeile und abcdefghij ist in der nächsten Zeile.
- ja das möchte ich überspringen, Leerzeichen und setze die Figuren aus einer Linie, die in einem Zeichen-array.die Funktion zu verwenden?
- ich habe versucht mit sscanf aber es bricht den Scanvorgang, sobald es sieht, weißen Raum und vernachlässigen alle anderen Zeichen, nach Raum.
- "erstellen Sie ein Zeichen-array von einer Linie aus" bedeutet, die Aufmerksamkeit auf die
\n
, das ist ein Leerzeichen. Sieht aus wie Sie wollen "überspringen white spaces" mit Ausnahme der\n
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einfachste (wohl auch nicht die Schnellste) Weg wäre, zu Lesen, Charakter weisen mit
fgetc()
.Nach dem Lesen ein Zeichen, überprüfen Sie es und überspringen jede Art von Charakter, die Sie nicht wollen.
Erkennen alle Arten von white-spaces verwenden
isspace()
, um zu erkennen, Rohlinge verwenden nurisblank()
.Starten, kopieren Sie die gewünschten Zeichen, um eine neue zugewiesen
char
-array ("string") für jeder frischen Zeile Lesen.fgetc
fordert, als beide sicher sind, verwenden die gleichen standard-Datei-Puffer. Aber "schneller ∝ schwieriger"; in diesem Fall, jonglieren, nur ein Zeichen in einer Zeit, ist leicht zu begreifen.fgetc
Lesen solltefgets()
, sollte es nicht?Ich gehe davon aus, dass es einen Zeilenumbruch zwischen "bbbbccc" und "abcedefghij", oder wie sonst würden Sie wissen, wo Sie Kluft zwischen den beiden char-arrays?
Dann sehe ich zwei grundlegende Optionen, die Sie haben.
1) Read-char durch char, mit getchar(). Skip whitespace, starten Sie eine neue Zeichenfolge, wenn Sie hit '\n'.
2) die Verwendung der Funktion fgets(), Lesen einer Zeile ein Stück. Kopieren Sie diese strings in einem anderen string manuell, überspringen von Leerzeichen in den Prozess.
Option 1) hat den Vorteil, dass Sie nur durch zu gehen die Daten einmal.
Ihre beste option ist die Verwendung
fgets()
.Deine Frage zu beantworten: ja, Sie können
sscanf()
nachfgets()
!Aber ich würde Spaziergang durch die gesamte Eingabe char-by-char und erstellen Sie eine neue Zeichenfolge ohne Leerzeichen ein.
sscanf()
ist nicht ein nützliches Werkzeug für den job.