2016-07-02 14 views
0

C-Programm für binäre SucheC-Sprache Ich habe Probleme beim Ausführen der Binärsuchfunktion und Übergeben des Arrays zur Funktion?

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

typedef struct node { //LINKED LIST FUNCTION 
     char *words; 
     struct node *next; 
       } Node; 

// liest einzelne Wörter aus der Datei auch benötigten Speicherplatz zuweisen.

char *strdup (const char *s) { 
      char *d = malloc (strlen (s)); 
       if (d == NULL) return NULL; 
        strcpy (d,s); 
        return d; 
      } 
    int main (int argc, char *argv[]) 
    { 
    FILE *file1; 
    FILE *file2; 
    FILE *file3; 

    file1 = fopen (argv[1],"r"); 
    file2 = fopen (argv[2],"r"); 


    char letters [100]; 
    char tempLetters [100][50]; 

// I tempLetters FOR BINARY SEARCH hat es Wörter in es

Node *current , *head; 
    int check; 
    head = current = NULL; 
    int i = 0; 

while (! feof (file1)){ 
      fscanf (file1,"%s",letters); 
      Node * list = malloc (sizeof (Node)); 
      list -> words = strdup(letters); 
      list -> next = NULL; 
    if(head == NULL){ 
     current = head = list; 
    } else { 
     current = current->next = list; 
    } 
    // printf ("%s\n", current->words); 
      strcpy (tempLetters[i],current -> words); 

gespeichert // HIER I gespeicherten Wörter in tempLetters

i++; 

// i ++ ist für die Verfolgung von wie viele Wörter. }

// FILE 2 reading queries: 
    char query [100]; //Just a local variable 
    int q = 0; 
    char QArray [100][50];//NEED THIS ONE FROM BINARY SEARCH 
    while (!feof (file2)){ 
      fscanf (file2, "%s", query); 
    if (!feof (file2)){ 

    //Keeping track of how many words 
    strcpy (QArray[q], query); 
      q++; 
     } 
     } 

}/* // Binary Search ich einzelne Worte aus QArray lesen will und feststellen, dass, wenn es ein gleiches Wort in temLetters Array ist. und wenn es dann gibt, drucken Sie dieses Wort und drucken Sie auch seinen ARRAY-Index. Wenn nicht, dann lese das nächste Wort von QArray bis QArray == NULL. Ich habe Probleme, die zu ARRAYS in Funktion übergeben. */

fclose (file1); 
    fclose (file2); 

    return 0;} 
+0

'char * d = malloc (strlen (s));' ist falsch. Du brauchst 'char * d = malloc (strlen (s) + 1);'. Das muss zuerst behoben werden. Es kann andere Fehler beheben oder nicht. –

+0

Wenn ich das +1 behalte, druckt es und "Enter" aus der Datei, also habe ich das entfernt. –

+0

Sieh dir die Antworten zu [strdup() an - was macht es in C?] (Http://stackoverflow.com/questions/252782/strdup-what-does-it-do-in-c). –

Antwort

0

char *d = malloc (strlen (s)); ist falsch. Sie benötigen char *d = malloc (strlen (s) + 1);. Das muss zuerst behoben werden. Es kann andere Fehler beheben oder nicht. - R Sahu

Verwandte Themen