我正在制作一个简单的注册系统,该系统维护着一组计算机科学学生的数据库。每个学生记录包含
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
char name[300];
int age;
char course_1[40];
char course_2[40];
char *remarks;
};
struct course
{
char course_title[200];
int cse_num[100];
char instructor[200];
char date[50];
char start_time[50];
char end_time[50];
char location[50];
};
main()
{
int i;
struct course data[11];
FILE *f;
char title[100];
int num[100];
char instructor[100];
char date[100];
char start_time[100];
char end_time[100];
char location[100];
char line[300];
f = fopen("course.dat", "r");
i=0;
while(*fgets(line, 300, f) != '\n')
{
sscanf(line, "%99[^\n]", num);
sscanf(line, "%99[^\n]", title);
sscanf(line, "%99[^\n]", instructor);
sscanf(line, "%99[^\n]", date);
sscanf(line, "%99[^\n]", start_time);
sscanf(line, "%99[^\n]", end_time);
sscanf(line, "%99[^\n]", location);
data[i].cse_num = num // doesn't work
strcpy(data[i].course_title, title);
strcpy(data[i].instructor, instructor);
strcpy(data[i].date, date);
strcpy(data[i].start_time, start_time);
strcpy(data[i].end_time, end_time);
strcpy(data[i].location, location);
i++;
}
fclose(f);
}
我的问题是如何从文件中获取输入,因为它是7行,直到考虑新行。我尽力解释这一点,谢谢你能不能帮我们!我真的专注于这一点,实在是无法弄明白。这是文件:
示例输入:
CSE1001
Research Directions in Computing
Wildes, Richard
W
16:30
17:30
VC 135
答案 0 :(得分:1)
不要忘记,您还必须strcpy(data[i].course_title, title);
这适用于所有字符串。
您目前正在执行此操作:data[i].course_title = title;
答案 1 :(得分:0)
考虑使用scanf。它是一个通用的函数,用于解析来自终端或具有fscanf
变体的文件的输入。它已经是你要包含的库的一部分,并且在格式上类似于printf
,你将使用它们进行程序输出。
答案 2 :(得分:0)
您错误宣布main()
:
struct course
{
char course_title[200];
int cse_num[100];
char instructor[200];
char date[50];
char start_time[50];
char end_time[50];
char location[50];
}
main()
{
这表示main()
返回struct course
。那是错的。
代码应该开始:
struct course
{
char course_title[200];
int cse_num[100];
char instructor[200];
char date[50];
char start_time[50];
char end_time[50];
char location[50];
};
int main(void)
{
你应该从C编译器那里收到关于这个错误的警告。如果你不是,你要么需要打开警告,要么需要更好的编译器。
这可能与您面临的其他问题直接相关,但也应该修复。