Сохранение членов структуры в связанном списке и сохранение их - PullRequest
0 голосов
/ 05 мая 2019

Я только недавно начал изучать указатели и связанные списки в C, и есть некоторые вещи, которые я еще не понимаю.Я пытаюсь вырезать входную строку и назначить определенные части этой строки структуре и добавить эту структуру в начало связанного списка, и, наконец, распечатать его.Входные данные представляют собой строку в формате 'a word1 word2 word3 или 'l word1 word2 word3'.Моя проблема в том, что список печатается не так, как предполагалось, и я думаю, что это связано с тем, как я добавляю элементы в список.Я хочу, чтобы он напечатал 3 слова, и он просто печатает последние два слова в последней строке ввода.Спасибо!

Вот мой код:

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

    #define MAXINPUT 682

    typedef struct words{
       char * str1;
       char * str2;
       char * str3;
    } words;

   typedef struct node{
       words data;
       struct node * next;
   } node;

   typedef  node * link;

   link head; /*head of list*/

    /*adds node to list*/
    void add(char c[]){
        words x;
        char * str;
        link temp = (link)malloc(sizeof(node));
        strtok(c, " ");
        str = strtok(NULL," ");
        x.str1 = str;
        str = strtok(NULL," ");
        x.str2 = str;
        str = strtok(NULL,"\0");
        x.str3 = str;
        temp->data = x;
        temp->next = head;
        head = temp;
     }

       void print_list(){
           link temp;
           for (temp = head;temp;temp = temp->next){
              printf("%s %s %s\n", temp->cont.nome,temp->cont.email,temp->cont.numero);
          }
           }

         int main(){
             char input[MAXINPUT];
             head = NULL;
             while (input[0] != 'x'){
                   fgets(input,682,stdin);
                   input[strcspn(input,"\r\n")] = 0;
                   if (input[0] == 'a')
                         add(input);
                   if (input[0] == 'l')
                         print_list();
             ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...