【发布时间】:2020-12-06 03:50:01
【问题描述】:
我需要编写一个函数void findBoursiers(void),它需要执行以下任务:
-
复制
struct student m_stuTab[STU_NB]的内容,其中包含6个学生 每一个a) 学生姓名 (
name[MAX_NAME])b) 文件号 (
fileNumber[NB_DIGITS])c) 得分。
我需要将所有这些复制到一个名为struct student temp_stuTab[STU_NB] 的临时结构(在void findBoursiers(void) 中创建)。
-
我需要取
struct student temp_stuTab[STU_NB]的内容,从最好到最差的顺序取最高分的3 个学生。我想象通过将它们与 for 循环进行比较。 -
将这 3 个学生放入一个名为
char m_boursiers[3][MAX_NAME]的数组中。
我必须不要更改以下代码,它位于main()
struct student {
char name[MAX_NAME];
char fileNumber[NB_DIGITS];
int score;
};
struct student m_stuTab[NB_STU];
char m_stuName[NB_STU][MAX_NAME] = {"Mario", "Yoshi", "Luigi", "Peach", "Wario", "Waluigi"};
char m_boursiers[3][MAX_NAME];
我知道这对于for 循环、strcpy 等是可行的,但我想知道是否有更有效的方法来做到这一点。也许类似于memcpy 的过程?如果我的问题难以理解,我对编码还很陌生。非常感谢!
【问题讨论】:
-
你指的“类似于memcpy的过程”就是你想要的,我想。在 C++ 中,它通常用作
std::memcpy。 -
trivially copyable 的类和结构可以用旧的
=复制。student就像它们一样微不足道。 -
@user4581301 所以你说我只需要写
student temp_stuTab = student m_stuTab?因为当我尝试在函数中写这个时,它给了我一个错误,说未定义的标识符“学生”。这是我第一次使用 struct,所以对我来说不是很清楚 -
只需
student temp_stuTab = m_stuTab复制一个 结构,或temp_stuTab[i] = m_stuTab[i](在循环中)按顺序复制数组的每个元素。但是memcpy会一举搞定。 -
嘿!谁偷走了 C++ 标签?该死!现在链接到 C++ 文档有点离题了。
标签: arrays c struct copy memcpy