2016-07-25 2 views
-1

Ich habe eine Datei.txt, die eine bestimmte Textfolge enthält. Können sagen, die Zeichenfolge, ohne Zitate „xDfS2 \ 0DJ \ 0 \ 0AJ“Formatieren von Datei eingegebenen Text in Char-Array?

Zuerst habe ich diesen Text in ein char Array gelegt, die ich unter Verwendung fopen und fread zur Eingabe des Textes in char *workingarray;

erreicht habe Mein Problem kommt in Form von versuchen, dieses Array zu drucken. (Mit printf) ich das Array zeichenweise ausdrucken möchten, aber jedes Mal, es liest '\0' ich will es in eine neue Zeile gehen .. so die Ausgabe von workingarray wäre ..

xDfS2 
dj 

aj 

Ich bin versuchen, dies jetzt in Art und Weise zu erreichen ..

for(i=0; i <= length; i++) { 
    if(workingarray[i] = '\0') { 
     printf("\n"); 
    } else { 
     printf("%c", workingarray[i]); 
    } 
} 

jetzt funktioniert das nicht, weil es nicht die erste, die \ 0 ist als '\0' aber als '\' und '0' zwei getrennte Felder in der Anordnung nicht sehen. Ich habe auch versucht, nur nach '\' zu suchen, indem ich '\\' verwendete, um die Tatsache zu kompensieren, dass es eine Escape-Sequenz ist, aber das gibt mir nur einen Segmentierungsfehler und Kern dumm, wenn ich versuche, es auszuführen.

Ich habe auch versucht, ein zweites Array machen, die aus der ersten basiert nimmt aber die '\' aus der ersten und eine '\0' in der zweiten machen, während jede 0 in der ersten Stelle zu ignorieren, wie diese.

int k = 0 
length = sizeof(workingarray); 

for(i=0; i <= length; i++) { 
    if(workingarray[i] = '\\') { 
     newarray[i-k] = '\0'; 
     k++; 
    } else if (workingarray[i] = '0') { 
     return; 
    } else { 
     newarray[i-k] = workingarray[i]; 
    } 
} 

Lange Rede kurzer Sinn .. Ich bin nicht sicher, wie dies zu tun. Wie kann ich eine Textzeichenfolge aus einer Datei (die gesamte Datei, nicht nur einen bestimmten Teil davon) eingeben und sie dann ausdrucken, während Sie neue Zeilen für jedes \ 0 in der Zeichenfolge erstellen?

+0

Vielleicht 'für (i = 0; i <= länge; i ++)' -> 'für (i = 0; i chux

+0

Es wäre informativ zu sehen, wie Sie Ihre Datei in workingarray lesen. Wenn Sie char * workingarray deklarieren und es nur zum direkten Auslesen verwenden, stürzen Sie wahrscheinlich ab, wenn Sie keinen Speicher zuweisen und seine Adresse im workingarray speichern. Außerdem scheint es, dass Sie lieber die Zeichen null als das NULL-Zeichen überprüfen möchten. –

Antwort

3

Wenn Sie tatsächlich '\\' und '0' in Array statt NUL haben, dann tun nur

for(i=0; i < length; i++) { 
    if(workingarray[i] == '\\' && workingarray[i+1] == '0') { 
     i++; 
     printf("\n"); 
    } else { 
     printf("%c", workingarray[i]); 
    } 
} 

Beachten Sie auch, dass Sie < in for-Schleife statt <= verwenden müssen, und der Vergleich muss == verwenden und nicht =.

Verwandte Themen