我必须编写一个函数,从键盘读取一个 struct 类型变量,以及一个显示一个 struct 类型变量的函数.随后,我必须使用这些函数来读取和显示 struct 的n个元素.这是我设法写的,但它看起来不太正确和合乎逻辑.我很乐意帮忙.这是我的代码:

#include <stdio.h>


 struct data{
    int d, m, y;
}dt;


void readData(struct data element){
    printf("\nData format dd-mm-yyyy : ");
    scanf("%d %d %d", &element.d,&element.m,&element.y);
}

void read(struct data element,int n){
    for(int i = 0; i < n; i++){
        readData(element);
    }
}
void display(struct data element){

     printf("\n %d.%d.%d\n",element.d,element.m,element.y);

}
void displayN(struct data element, int n){
    for(int i = 0; i < n; i++){
        display(element);
    }
}
int main() {
struct data dd1;
    read(dd1,3);
    displayN(dd1,3);

    return 0;
}

推荐答案

看起来你想使用array.

#include <stdio.h>


struct data{
    int d, m, y;
}dt;

/* use pointer to an element to modify the data */
void readData(struct data *element){
    printf("\nData format dd-mm-yyyy : ");
    scanf("%d %d %d", &element->d,&element->m,&element->y);
}

/* use an array to read data (just syntax sugar, this argument element is actually a pointer) */
void read(struct data element[],int n){
    for(int i = 0; i < n; i++){
        readData(&element[i]);
    }
}

/* you don't need to use a pointer here because the value is just printed and not changed */
void display(struct data element){

     printf("\n %d.%d.%d\n",element.d,element.m,element.y);

}

/* use an array to print multiple data */
void displayN(struct data element[], int n){
    for(int i = 0; i < n; i++){
        display(element[i]);
    }
}

/* define the number of elements and use that to avoid typo */
#define N 3

int main(void) {
    struct data dd1[N]; /* declare an array */
    read(dd1,N);
    displayN(dd1,N);

    return 0;
}

C++相关问答推荐

字符串令牌化xpath表达式

空指针的运行时强制转换

特定闪存扇区的内存别名

使用GOTO从多个嵌套循环C继续

使用双指针动态分配和初始化2D数组

在 struct 中强制转换空指针

将数据移动到寄存器时出现分段故障

Clang警告称,`ffi_type`与`sizeof`不兼容

X64:并发写入布尔数组

解决S随机内存分配问题,实现跨进程高效数据共享

这个C程序在工作中途停止获取输入.我收到分段故障(核心转储).我还是不知道问题出在哪里

无法访问共享目标文件内的共享指针

C:如何将此代码转换为与数组一起使用?

为什么我的旧式&q;函数在传递浮点数时会打印2?

C编译和运行

Linux Posix消息队列

一元运算符

如何使用 VLA 语法使用 const 指针声明函数

GDB 用内容初始化数组

当循环变量在溢出时未定义时,可以进行哪些优化?