首页 > 解决方案 > 如何访问结构内的数据?

问题描述

我正在尝试访问帐号、姓名和地址并将其打印在函数 void printAllRecords 中,但是在我使用函数 addRecord 添加新记录后,它仍然不会打印保存的数据。他们不让我发布我的代码,所以我只添加了 2 个函数。任何帮助都会很棒。多谢你们。假设我从 main 调用函数。

 struct record
{
  int accountno;
  char name[25];
  char address[80];
  struct record *next;
};
   

    /*print all the records in the database */
void printAllRecords (struct record *start)
{
  while (start != NULL)
    {

      printf ("%d\n%s\n%s\n", start->accountno, start->name, start->address);

    }
}

标签: c

解决方案


我不明白为什么 start 是双指针,也不明白为什么要为结构的每个成员传入一个 arg。但这将向您展示如何将 scanf 与您的结构一起使用。

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

 struct record
{
  int account;
  char name[25];
  char address[80];
  struct record *next;
};
    
int addRecord (struct record *rec)
{

  printf ("Enter your account number:\n");
  scanf ("%d", &(rec->account));

  while (rec->account < 0)
    {
      printf ("Error: Enter a valid account number.\n");
      scanf ("%d", &(rec->account));
    }

  //emptyStdin (); /*function to clean the buffer*/

  printf ("Enter your name:\n");
  scanf("%s", rec->name);
  //fgets ((rec->name), 25, stdin);

  printf ("Enter your residential address:\n");
  //getaddress (address, 80); /*function to get multiple lines of input from the user*/

  return 1;
}



int main()
{
    struct record rec;
    addRecord(&rec);
    printf("%d %s, %s", rec.account, rec.name, rec.address);
    return 0;
}

推荐阅读