需要帮助将字符*扫描到带有结构的函数中



我刚刚开始在我的大学课程中学习C。我们已经讨论过类似的主题,但不太像我的教授所问的。我对指针或结构一点也不好,所以这个任务越来越令人沮丧,但我在上一次扫描中只收到一个错误,说"预期类型 char* 但得到结构用户**",我无法弄清楚。

#include <stdio.h>
#define PEOPLE 10
struct user {
int user_id;
char* user_name;
};
void populate(struct user* users, int size);
void main() {
struct user s1[PEOPLE], s2;
populate(&s2, s1->user_id);
}
void populate(struct user* users, int size) {
for(int i = 1; i < PEOPLE + 1; i++) {
printf("Enter an ID of user %d: ", i);
scanf("%d", &size);
printf("Enter the name of user %d: ", i);
scanf("%s", users);
}
}

这是作业:

编写执行以下操作的 C 程序:

程序定义了一个称为 user 的 C 结构,它有两个属性

int user_id;
char* user_name;

程序声明了一个由大约 10 个结构用户变量和一个名为 populate(( 的函数组成的数组,该函数将指向结构用户变量的指针和整数大小作为参数。populate(( 方法将要求用户为结构用户变量数组中的每个单元格分配一个 id 和名称,直到数组已满。 提示:此函数的标头可能看起来像 void 填充(结构用户* 用户,整数大小(;

以下是错误消息: https://i.stack.imgur.com/xLUyo.png

在第二个 scanf 语句中,您尝试捕获带有结构变量的字符串参数。您的第二个 scanf 语句应如下所示:

scanf("%s", users-> user_name);

您还将错误的参数传递给您的函数。完整的代码如下:

#include <stdio.h>
#define PEOPLE 10
struct user {
int user_id;
char user_name[20];
};
void populate(struct user* users, int size);
void main() {
struct user s1[PEOPLE];
populate(s1, PEOPLE);
}
void populate(struct user users[], int size) {
for(int i = 0; i < size; i++) {
printf("Enter an ID of user %d: ", i+1);
scanf("%d", &users[i].user_id);
printf("Enter the name of user %d: ", i+1);
scanf("%s", users[i].user_name);
}
}

最新更新