c - 需要帮助将 char* 扫描到具有结构的函数中
问题描述
我刚刚开始在我的一门大学课程中学习 C。我们讨论过类似的话题,但与我教授的要求不太一样。我对指针或结构一点也不擅长,所以这个分配变得令人沮丧,但我在上一次 scanf 中只收到一个错误,说“预期类型 char* 但得到 struct user**”,我无法弄清楚。
#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 个 struct 用户变量的数组和一个名为 populate() 的函数,该函数将一个指向 struct 用户变量的指针和一个整数大小作为参数。populate() 方法将要求用户为 struct 用户变量数组中的每个单元分配一个 id 和名称,直到数组已满。提示:此函数的标头可能看起来像 void populate (struct user* users, int size);
解决方案
在您的第二个 scanf 语句中,您尝试使用 struct 变量捕获字符串参数。您的第二个 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);
}
}
推荐阅读
- reactjs - 如何将返回类型设置为 React.StatelessComponent?
- javascript - 在 React 中复制到剪贴板斜体
- python - 对目录中的多个文件执行python代码并将多个文件输出到另一个目录
- android - 我可以使用 jks 作为 googleplay 的密钥库吗
- javascript - 带有请求承诺的 NodeJS 发布请求以进行 Twitch 身份验证
- reactjs - Redux 在 action/reducer 调用后反应不设置值
- java - 通过 Intent 发送一个非常大的列表
- c++ - c++向量与用户定义的类比较?(==, <, >)
- firebase - 为什么 Flutter 会因为明显存在的“缺少吸气剂”而失败?
- python - python的创意标准输入和错误处理