【问题标题】:Structs and initializing arrays结构体和初始化数组
【发布时间】:2017-08-07 23:58:44
【问题描述】:

我一直在尝试研究如何将结构与数组一起使用,但不明白如何初始化数组的前三个项目,如代码中所示。我在尝试打印或扫描数组的值时也遇到错误,因为它说它们都是整数,即使我已将它们声明为字符串/字符。任何帮助都会很棒,谢谢。

#include <stdlib.h>
#include <stdio.h>
#define MAXLEN 100

typedef struct{
  char name;          <<have now changed all to [MAXLEN+1]
  char surname;       <<
  char UUN;           <<
  char department;    <<  
  char gender;
  int age;
} student_t;


int main(void){
  student_t details[5];
  int i, n;

  details[0].name = "John";           <<should all the '=' be ',' instead?
  details[0].surname = "Bishop";      <<do not understand how to initialize
  details[0].UUN = "s1234";
  details[0].department = "Inf";
  details[0].gender = 'm';
  details[0].age = 18;

  details[1].name = "Lady";
  details[1].surname = "Cook";
  details[1].UUN = "s2345";
  details[1].department = "Eng";
  details[1].gender = 'f';
  details[1].age = 21;

  details[2].name = "James";
  details[2].surname = "Jackson";
  details[2].UUN = "s3456";
  details[2].department = "Eng";
  details[2].gender = 'm';
  details[2].age = 17;

  for(i = 3; i < 6; i++){
    printf("Enter first name second name UUN department gender age: \n");
    scanf(" %s %s %s %s %c %d", details[i].name, details[i].surname, details[i].UUN, details[i].department, details[i].gender, details[i].age);
  }

  for(n = 0; n < 6;n++){
    printf("details: %s", details[n].name);
  }

  return EXIT_SUCCESS;
}

【问题讨论】:

  • 您的结构成员只是单独的char 对象。您如何期望每个字符串适合单个 char
  • 这里提示一下:char 只能容纳一个字符。你想保持字符串。你怎么能这样做?
  • 是的,但每次我将它声明为字符串时,scanf 中都会出现错误,说它是 char** 并期望一个字符串。出于某种原因,让它如图所示,这是阻止它的唯一方法

标签: c arrays struct


【解决方案1】:

你必须为每个字符串加上它的大小。

char name; 应该是char name[30]; //for example

你应该使用strcpy(来自string.h)在变量中放置一个char数组(字符串)。

details[0].name = "John"; should be  strcpy(details[0].name,"John");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2011-03-24
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多