我试图通过键盘为我的结构获取多个条目。我认为我在scanf中错了,但我不确定我错在哪里。谢谢!
这就是我所拥有的:
#include <stdio.h>
#include <math.h>
int main()
{
//define the structure
struct course
{
char title[20];
int num;
} ;
// end structure define
//define the variable
struct course classes;
printf("Enter a course title and course number");
scanf("%s %d", classes[3].title, &classes.num);
return 0;
}
答案 0 :(得分:1)
按照Carl的说法修复代码并且工作正常:
#include <stdio.h>
int main()
{
struct course
{
char title[20];
int num;
} ;
struct course class;
printf("Enter a course title and course number");
scanf("%s %d", class.title, &class.num);
printf("%s %d", class.title, class.num);
return 0;
}
答案 1 :(得分:0)
有几个问题。
你有这个名为“classes”的结构,但它只有一个条目 - 你正在访问第三个条目,所以你正在运行结束。
此外,标题长度为20个字节,但如果在scanf()中输入更大的内容,则它将溢出。基本的scanf()结构看起来还不错。
我会更喜欢这样设置:
#include <stdio.h>
#include <math.h>
#define MAX_CLASSES 50 // how big our array of class structures is
int main()
{
//define the structure
struct course
{
char title[20];
int num;
} ;
// end structure define
//define the variable
struct course classes[MAX_CLASSES];
int nCurClass = 0; // index of the class we're entering
bool bEnterMore = true;
while (bEnterMore == true)
{
printf("Enter a course title and course number");
scanf("%s %d", classes[nCurClass].title, &classes[nCurClass].num);
// if user enters -1 or we fill up the table, quit
if (classes[nCurClass].num == -1 || nCurClass > MAX_CLASSES-1)
bEnterMore = false;
}
}
这是基本的想法。可以进行的另一项改进是在将课程标题分配给课程[]。标题之前检查课程标题的长度。但是你需要做某事; - )