Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我需要做的是打开一个文件,以读取以下数据。我已经完成了打开文件的几乎所有工作,但是我停留在需要标记信息并将其添加到结构数组的部分。输入数据如下所示:
这是我的
这是我用于打开文件并将其读入上述
我在这里想要做的是将数据标记化为结构数组,但无法正常工作。我究竟做错了什么?
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我需要做的是打开一个文件,以读取以下数据。我已经完成了打开文件的几乎所有工作,但是我停留在需要标记信息并将其添加到结构数组的部分。输入数据如下所示:
John is enrolled in MATH 1426.
Peter is enrolled in SCI 1441.
John is enrolled in PHYS 1201.
这是我的
struct
看起来需要将数据读入的样子:struct classes {
char name[20];
char department[4];
int course_number[4];
};
这是我用于打开文件并将其读入上述
struct
的代码:int main(void)
{
FILE *file;
char buffer[50];
char line[50];
struct classes student;
file = fopen("inputfile.txt", "r");
while (fgets(buffer, sizeof(buffer), fp))
{
tokenize = strtok(buffer, " ");
strcpy(line, tokenize);
while(tokenize != NULL)
{
token = strtok(NULL, " ");
switch(i)
{
case 3: strcpy(student.department, token);
break;
case 5: student.course_number = atoi(token);
}
}
i++;
}
i=0;
}
我在这里想要做的是将数据标记化为结构数组,但无法正常工作。我究竟做错了什么?
最佳答案
#include <stdio.h>
#include <stdlib.h>
struct classes {
char name[20];
char department[5];//+1 for '\0'
int course_number;
};
int main(void){
FILE *file;
char buffer[50];
struct classes student, students[48];
int i, count=0;
file = fopen("inputfile.txt", "r");
while (fgets(buffer, sizeof(buffer), file)){
//Format : NAME is enrolled in DEPARTMENT NUMBER.
if(3 == sscanf(buffer, "%19s %*s %*s %*s %4s %d",
student.name, student.department, &student.course_number))
students[count++] = student;
}
fclose(file);
for(i = 0; i < count; ++i){
printf("%-*s %-*s %d\n",
(int)sizeof(student.name), students[i].name,
(int)sizeof(student.department), students[i].department,
students[i].course_number);
}
return 0;
}
关于c - 从文本文件解析输入数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24643651/