2016-05-26 6 views
-1

私は、ファイルから単語を読み込んで、その中から別のものをリンクリストに追加するプログラムをCで書いています。しかし、私は正しい結果を得ていません。単語がリストに存在するかどうかを調べるのに問題があります。どんな助けもありがたいです。ありがとう。リンクリストにファイルから読み込んだ異なる文字列を挿入する

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

struct list_el { 
    char val[30]; 
    struct list_el * next; 
}; 

typedef struct list_el item, item2; 

void main() { 

    item * curr, * head, * curr2, * head2; 
    FILE *fp; 
    char words[30]; 
    int i; 

    head = NULL; 
    head2 = NULL; 
    if ((fp=fopen("file.txt","r"))==NULL) 
     printf("cannot open file\n"); 
    i=0; 
    while (fscanf(fp,"%s",&words)!=EOF) { 
     if (i!=0) 
      while(curr2) { 
       if (!strcmp(words,curr2->val)){ 
        break; 
       } 
       curr2 = curr2->next ; 
      } 
     if (curr2==0 || i==0){ 
      curr = (item *)malloc(sizeof(item)); 
      curr2 = (item2 *)malloc(sizeof(item2)); 
      strcpy(curr->val,words); 
      strcpy(curr2->val,words); 
      curr->next = head; 
      curr2->next = head2; 
      head = curr; 
      head2 = curr2; 
     } 
     i++; 
    } 
    while(curr) { 
     printf("%s\n", curr->val); 
     curr = curr->next ; 
    } 
    fclose(fp); 
} 

答えて

2
int main(void) {//void main() is invalid. 
    item *curr, *head = NULL; 
    FILE *fp; 
    char words[30]; 

    if ((fp=fopen("file.txt","r"))==NULL){ 
     printf("cannot open file\n"); 
     return EXIT_FAILURE;//can't continue 
    } 
    while (fscanf(fp,"%29s", words) != EOF) {//remove & 
     curr = head; 
     while(curr) {//Search the current list 
      if (!strcmp(words, curr->val)){ 
       break; 
      } 
      curr = curr->next; 
     } 
     if (curr == NULL){//not find words 
      item *node = malloc(sizeof(*node)); 
      strcpy(node->val, words); 
      node->next = head; 
      head = node; 
     } 
    } 
    fclose(fp); 

    curr = head; 
    while(curr) { 
     printf("%s\n", curr->val); 
     curr = curr->next ; 
    } 
} 
+0

@StamatisPapadopoulos '項目* =ノードのmalloc(はsizeof(*ノード));' '項目と同じである* =ノードのmalloc(はsizeof(アイテム));'。 – BLUEPIXY

+0

οκ、しかし何も印刷されません:P –

+0

@StamatisPapadopoulos [DEMO](http://ideone.com/c6L1JV) – BLUEPIXY

関連する問題