2016-07-14 23 views
0

Ich versuche derzeit, ein Array von Zeichen, die vom Einlesen zugewiesen ist, aus einer Textdatei zu teilen. gerade habe ich Probleme mit Trennzeichen und ich weiß nicht, ob ich mehrere haben kann. Was ich abgrenzen möchte, sind Kommas und Leerzeichen. Hier ist mein Code soweit.Teilen einer Zeichenfolge mit mehreren Trennzeichen in C

#include <stdio.h> 
FILE * fPointer; 
fPointer = fopen("file name", "r"); 
char singleLine[1500]; 
char delimit[] = 
int i = 0; 
int j = 0; 
int k = 0; 


while(!feof(fPointer)){ 
    //the i counter is for the first line in the text file which I want to skip 

    while ((fgets(singleLine, 1500, fPointer) != NULL) && !(i == 0)){ 
     //delimit in this loop 
     puts(singleLine); 

    } 
    i++; 
} 

fclose(fPointer); 

return 0; 
} 

Was ich bisher gefunden habe, ist eine Möglichkeit, mit einem Text-String zu begrenzen, die Abkürzung für Tabs und so zum Beispiel hat

char Delimit[] = " /n/t/f/s"; 

dann würde ich diese Zeichenfolge in der strtok() -Methode unter dem Parameter-Trennzeichen verwenden

aber dies wird nicht lassen Sie mich als Trennzeichen ein Komma haben.

Und der springende Punkt ist, damit ich anfangen kann, die begrenzten Strings in Variablen zuzuweisen.

Abtastwerteingang: P1,2, 3, 2

Jede Hilfe oder Referenzen ist dank geschätzt.

+0

'strtok'? Können Sie eine Beispielzeile aus der Textdatei einfügen? Was ist der Weg, den du bisher gefunden hast? – thelaws

+0

@thelaws Ich habe weitere Informationen hinzugefügt, wenn Sie eine Klarstellung benötigen, lassen Sie es mich wissen. – Thorx99

+1

Sie können ein ',' als Trennzeichen in 'strtok' verwenden. Es gibt ein Beispiel dafür: http://www.cplusplus.com/reference/cstring/strtok/ – thelaws

Antwort

1

Sie können einen , als Trennzeichen in der strtok Methode verwenden.

Ich denke auch, Sie wollten \n\t für Zeilenumbrüche und Tabs verwenden (ich weiß nicht, was /f/s soll darstellen).

Versuchen Sie es mit dieser:

char Delimit[] = " ,\n\t"; 

// <snip> 

char * token = strtok (singleLine, Delimit); 
while (token != NULL) 
{ 
    // use the token here 
    printf ("%s\n",token); 

    // get the next token from singleLine 
    token = strtok (NULL, Delimit); 
} 

Das Ihre Abtastwerteingang P1,2, 3 , 2 in verwandeln würde:

P1 
2 
3 
2 
+0

Das Problem mit dem 'strtok()' Ansatz ist die potentiell falsche Interpretation von Sequenzen benachbarter Trennzeichen: 'P1 ,,, 2,3,2 'würde die gleiche Ausgabe erzeugen, leere Werte können nicht mit' strtok' analysiert werden. – chqrlie

Verwandte Themen