【发布时间】:2021-08-02 18:57:16
【问题描述】:
我想知道是否有更有效的方法(更少的行,更少的内存)来打印字符串中包含的信息。我在用函数参数循环思考。例如,如果您需要打印 100 个学生的信息(姓名、组和出生日期),我想有一个更好的方法,将 printstudent( studentn) 写一百次。
问题是我不知道如何创建一个循环,所以从 student1 到 student100 调用。我不能称它为 student[i] 还是可以?
我愿意接受任何建议或想法谢谢!
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
void printstudents(struct st student);
struct st {
char familia[1000];
char imia[1000];
char otchestvo[1000];
int gruppa;
int grozhdenia;
};
int main() {
struct st student1;
struct st student2;
struct st student3;
//Информация студентов:
strcpy(student1.familia, "Putin");
strcpy(student1.imia, "Vladimir");
strcpy(student1.otchestvo, "Vladimirovich");
student1.gruppa = 40040;
student1.grozhdenia = 1952;
strcpy(student2.familia, "Gordon");
strcpy(student2.imia, "Dymitro");
strcpy(student2.otchestvo, "Aleksandrovich");
student2.gruppa = 50050;
student2.grozhdenia = 1953;
strcpy(student3.familia, "Emelianenko");
strcpy(student3.imia, "Fedor");
strcpy(student3.otchestvo, "Olegovich");
student3.gruppa = 60060;
student3.grozhdenia = 1950;
printstudents(student1);
printstudents(student2);
printstudents(student3);
return 0;
}
void printstudents(struct st student) {
printf("Student: %s %s %s, %d, %d \n", student.imia, student.otchestvo,
student.familia, student.gruppa, student.grozhdenia);
}
【问题讨论】:
-
通常你会为此使用一个数组。
-
你应该让
printstudents接受一个指向对象的指针——否则C会在你调用函数时复制结构。 -
是的,您可以声明
struct st student[101];(不是student[100],因为索引从零开始)使用student[1]到student[100]。 -
@MikeCAT 如果 OP 有 100 名学生,他们应该只使用
student[0]到student[99]- 无需为额外的学生分配内存就可以使用非标准的基于 1 的索引。 -
你在标题和标签中说“C”,但你的代码是 C++(由于额外的
#include <iostream>和using namespace std;)你真的想使用哪个?
标签: c data-structures struct