想向结构数组中输入字符串,但scanf这个位置的person一直显示不允许使用类型名,整破防了,求解
#include
#include
using namespace std;
struct person
{
char name[10];
int point;
};
int main()
{
int n;
struct person p;
while (cin >> n)
{
for (int i = 0; i < n; i++)
{
scanf(" % s % d", person[i].name, &person[i].point);
}
}
}
详细解答如下,望采纳
在这段代码中,结构体数组 person 的定义有误。应当把 person 替换为 p,然后用下标 i 访问数组中的每一个元素,如下所示:
scanf(" % s % d", p[i].name, &p[i].point);
需要注意的是,在 scanf 函数中,需要在第一个参数的字符串前面加一个空格,以避免与字符串中的空格发生冲突。
修改后的代码如下所示:
#include<iostream>
#include<stdio.h>
using namespace std;
struct person
{
char name[10];
int point;
};
int main()
{
int n;
struct person p;
while (cin >> n)
{
for (int i = 0; i < n; i++)
{
scanf(" % s % d", p[i].name, &p[i].point);
}
}
}
参考如下:
#include<iostream>
#include<stdio.h>
using namespace std;
struct person
{
char name[10];
int point;
};
int main()
{
int n;
cin >> n;
struct person p[n];
for (int i = 0; i < n; i++)
{
getchar(); // 接收一下换行符
scanf("%s %d", p[i].name, &(p[i].point));
printf("%s,%d\n", p[i].name, p[i].point);
}
}
如有帮助,欢迎点赞+采纳哈!