gpt4 book ai didi

c - 打印出结构体数组

转载 作者:行者123 更新时间:2023-11-30 16:53:14 25 4
gpt4 key购买 nike

在这个程序中,我假设读取一个records.ssv 文件并使用结构数组将其打印出来。然而,在打印数组之前要计算平均值。该文件包含学生姓名、ID、考试 1、考试 2、项目 1、项目 2、平均分和成绩(字母、单项)。

当前在打印 eh 数组并计算平均值时遇到问题。我将在下面发布我的代码和输出。

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

typedef struct {
char name[25];
int I_D[9];
int exam[2];
int project[2];
char grade;
float avg;
} STUDENT;

void printStuAry(int size, STUDENT stuAry[]);

int main(void)
{
STUDENT stuAry[5];

FILE* f = fopen("records.ssv", "r");
if (f == NULL) {
printf("Error opening file records.ssv.\n");
exit(1);
}

char line[65];
int ind = 0;

while (fgets(line, sizeof(line), f) != NULL) {
sscanf(line, "%25[^,] ; %d ; %d ; %d ; %d ; %d ; %c",
stuAry[ind].name,
&stuAry[ind].I_D,
&stuAry[ind].exam[0],
&stuAry[ind].exam[1],
&stuAry[ind].project[0],
&stuAry[ind].project[1],
&stuAry[ind].grade);
ind++;
}
// calculates average
stuAry[ind].avg = (stuAry[ind].exam[0] + stuAry[ind].exam[1] +
stuAry[ind].project[0] + stuAry[ind].project[1]) /4.0;

printf("\t+---------+-------+-------+-------+---------+----------+----------+------+\n");
printf("\t| Index |Student| ID | Exam1 | Exam2 |Project1 | Project2 | Grade|\n");
printf("\t+---------+-------+-------+-------+---------+----------+--------+--------+\n");

printStuAry(5, stuAry);
if (fclose(f) == EOF) {
printf("Error closing file records.ssv.\n");
exit(2);
}

int letter;
printf("Enter grade letter to search and q to quit");
scanf("%d", letter);

while (letter != -1){// tests for whether user wants to end program
printStuAry(5, stuAry);
}

return 0;
}

/*
*Function name: printStuAry
*
*Input Parameters: int size Student Ary
*
*Desription: prints out student Ary
*
*Return value: 0
*/

void printStuAry(int size, STUDENT stuAry[])
{
for (int i=0; i<size; i++) {
printf("\t| %d | %s | %d | %d | %d | %d | %d | %c |\n", //displays student information
i, stuAry[i].name, stuAry[i].exam[0],
stuAry[i].exam[1], stuAry[i].project[0],
stuAry[i].project[1], stuAry[i].avg,
stuAry[i].grade);
}
}

输出

        +---------+-------+-------+-------+---------+----------+----------+------+
| Index |Student| ID | Exam1 | Exam2 |Project1 | Project2 | Grade|
+---------+-------+-------+-------+---------+----------+--------+--------+
| 0 | Panzer | -544760936 | 32568 | -544762280 | 32568 | -27 |   |
| 1 | Basler | -1718237240 | 32767 | -544747128 | 32568 | -104 |   |
| 2 | Leaton | -1718237400 | 32767 | 118 | 0 | 9 |   |
| 3 | Bishop | 4195301 | 0 | 194 | 0 | 62 |   |
| 4 | Lucey | -1718237064 | 32767 | 4197349 | 0 | -96 |   |
Enter grade letter to search and q to quit

正确的输出应该是什么:

原文:

+-------------------------+--------------+------+------+---------+---------+-------+-----+
| Student Name|Identification|Exam 1|Exam 2|Project 1|Project 1|Average|Grade|
+-------------------------+--------------+------+------+---------+---------+-------+-----+
| Holtkamp, Norman| N21102485| 83| 61| 62| 78| 71.00| C|
| Bellomy, Shavonda| N94185259| 74| 96| 80| 98| 87.00| B|
| Clutter, Loris| N68760306| 83| 68| 93| 70| 78.50| C|
| Rountree, Edythe| N76813896| 98| 91| 90| 81| 90.00| A|
| Waldeck, Marylee| N44293872| 88| 100| 70| 87| 86.25| B|
+-------------------------+--------------+------+------+---------+---------+-------+-----+

最佳答案

尝试用 sscanf(line , "%25[^,] %d %d %d %d %d %c",

关于c - 打印出结构体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40962135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com