我正在用元素周期表项目练习C语言.我有这个.txt文件,其中包含以下顺序的所有元素:
atomic_number name symbol mass_number
.
我的程序应该用数据填充一个 struct 数组(为了便于搜索). 问题是我的程序不会一直打印到最后一个元素(ATOM_NUMBER=118),它只在54结束,不会继续打印.它也不会填充超过54的array.
以下是我试图解决这个问题的方法
file: populate.c个
#include "periodic_table.h"
int populate(void)
{
struct element
{
int atomic_num;
char name[15];
char symbol[5];
float mass_num;
};
// Array to hold the elements
struct element e[118];
// checks that the file exists
FILE *ptr = fopen("periodic_table.txt", "r");
if (ptr == NULL)
{
printf("No file to read from.\nExiting...\n");
return 1;
}
int line; // first line of the txt file
for (line = 1; line <= 118; line++)
{
if (fscanf(ptr, "%d %s %s %f", &e[line].atomic_num, &e[line].name, &e[line].symbol, &e[line].mass_num))
{
//print is just for debugging purpose
printf("%d record: %d %s %s %.2f\n", line, e[line].atomic_num, e[line].name, e[line].symbol, e[line].mass_num);
}
fflush(stdin);
}
fclose(ptr);
return (0);
}
我的文本文件如下所示
1 Hydrogen H 1.01
2 Helium He 4.00
3 Lithium Li 6.94
.
.
.
116 Livermorium Lv 293.00
117 Tennesine Ts 294.00
118 Oganesson Og 294.00