2017-04-07 5 views
0

Ich versuche, ein Array von Wörtern aus einer Textdatei zu erstellen. Ich kann es bekommen, um die Werte richtig auszudrucken, aber ich brauche ein Array, mit dem ich tatsächlich arbeiten kann. Nachdem ich dieses Array habe, muss ich verschiedene Dinge zu den Wörtern tun, die ich gespeichert habe, z. B. das Zählen jeder einzelnen Länge. Jetzt brauche ich nur Hilfe, um ein Array zu erstellen, mit dem ich tatsächlich arbeiten kann. HierC Erstellen eines Arrays aus TexFile

ist der Code:

# include <stdio.h> 
# include <stdlib.h> 
# include <string.h> 


int main (int argc, char* argv[]){ 
    // First Read in First novel File 
    FILE *fp; 
    char *ProgFile; 

    // Variables for Parsing 
    int i = 0; 
    int j=0; 
    char *cp; 
    char *bp; 
    char line[255]; 
    char *array[5000]; 
    int x; 
    int wordCount=0; 
    int wordCountPerNovel; 


    // Adjusting the file name to include txt and corresponding number 
    strcat(argv[1],"_1.txt"); 
    ProgFile = argv[1]; 

    // Open Each File 
    fp=fopen(ProgFile,"r"); 
    if(fp==NULL)printf("error"); 
    else printf("bin file loaded: '%s'",ProgFile); 
    // Now begin analysing 
    // Part 1 
    // Parse Entire Document into Array of Strings 
    while (fgets(line, sizeof(line), fp) != NULL) { 
      bp = line; 
      while (1) { 
        cp = strtok(bp, ",.!?<97> \n"); 
        bp = NULL; 
        if (cp == NULL)break; 
        array[i++] = cp; 
        printf("Check print - word %i:%s:\n",i-1, cp); 
      } 
    } 
    // At this point i is the last word that was iterated, -1 since it breaks out after being added 
    // This gets total words of all novels 

    wordCount=wordCount+(i-1); 
    printf("\nTotal words %i\n",wordCount); 
    // Find Total number of letters 
    //for (i=1;i<15;i++){ 
    //  printf("My value: %s \n",finalArrayWord[i]); 
    // 
    //} 
+0

Sie haben eigentlich nicht eine Frage stellen. – melpomene

+0

Was ist ein * Array, mit dem ich tatsächlich arbeiten kann *? – Arash

+0

1) 'strcat (argv [1]," _ 1.txt ");' Kann das nicht. – BLUEPIXY

Antwort

1

Der Code nicht kompilieren. Wenn Sie die Länge kennen, können Sie char array verwenden und Sie müssen malloc nicht verwenden, um aus einer Datei in ein Array zu lesen.

Datei 1.txt

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatu 

-Code

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

void read_words (FILE *f) { 
    char x[1024]; 
    char **a; 
    a = malloc(1024 * sizeof(char*)); 
    for (int i = 0; i < 1024; i++) 
     a[i] = malloc((1024+1) * sizeof(char)); 
    int i = 0; 
    while (fscanf(f, " %1023s", x) == 1) { 
     strcpy(a[i], x); 
     i++; 
    } 
    for (int j = 0; j < i; j++) { 
     printf("%d %s\n", j, a[j]); 
    } 
} 
int main(void){ 
    read_words(fopen("1.txt", "r")); 
    return 0; 
} 

Test (hier ist Ihr Array)

$ ./a.out 
0 Sed 
1 ut 
2 perspiciatis 
3 unde 
4 omnis 
5 iste 
6 natus 
7 error 
8 sit 
9 voluptatem 
10 accusantium 
11 doloremque 
12 laudantium, 
13 totam 
14 rem 
15 aperiam, 
16 eaque 
17 ipsa 
18 quae 
19 ab 
20 illo 
21 inventore 
22 veritatis 
23 et 
24 quasi 
25 architecto 
26 beatae 
27 vitae 
28 dicta 
29 sunt 
30 explicabo. 
31 Nemo 
32 enim 
33 ipsam 
34 voluptatem 
35 quia 
36 voluptas 
37 sit... 
+0

Dieser seg Fehler. – Mmsyther

+0

Hier ist die Testdatei, die funktionieren muss. – Mmsyther

+0

Webstuhl Nennen Sie mich Ishmael. Vor einigen Jahren - egal wie lange genau - hatte ich wenig oder kein Geld in meiner Handtasche und nichts besonderes, um mich an der Küste zu interessieren. Ich dachte, ich würde ein wenig segeln und den wässrigen Teil der Welt sehen. Es ist eine Möglichkeit, die Milz zu vertreiben und den Kreislauf zu regulieren. Wann immer ich mich grimmig über den Mund wachse; wann immer es ein nasser, nieseliger November in meiner Seele ist; Wann immer ich Mystik finde – Mmsyther

Verwandte Themen