【发布时间】:2020-08-22 04:28:49
【问题描述】:
我正在编写一个将学生数据输出到文本文件的小程序,我将这些数据存储在一个结构数组中,然后我尝试将这些数据输出到一个文本文件;但由于某种原因,它只输出最近输入的数据。
struct students
{
char *familyName[20], *firstName[20];
int enrolNum, mark1, mark2, mark3;
} st[1000];
FILE *fptr;
int studentNum;
int i = 0;
void main()
{
double markOne, markTwo, markThree;
markOne = st[i].mark1 * 0.30;
markTwo = st[i].mark2 * 0.40;
markThree = st[i].mark3 * 0.30;
char *fName;
do
{
ptr = fopen("student.txt", "a+");
fprintf(fptr, "Family name \tFirst name \tenrolment number \tartefact mark 1 \tartefact mark 2 \tartefact mark 3 \n");
fprintf(fptr,"%s \t\t%s \t\t%d \t\t\t%.1f%% \t\t%.1f%% \t\t%.1f%% \n", st[i].familyName, st[i].firstName, st[i].enrolNum, markOne, markTwo, markThree);
printf("\n%d\n%d", i, studentNum);
} while( i < studentNum);
fclose(fptr);
}
我似乎无法弄清楚为什么它只输出最新的数据点而不是全部。 关于它为什么会这样做的任何提示?
非常感谢 史蒂夫
【问题讨论】:
-
ptr = fopen("student.txt", "a+");真的应该在循环之外完成。如果你真的必须在循环内打开,那么也要在循环内关闭。 -
为什么
st值从未真正设置? -
char *familyName[20], *firstName[20];可能需要是char familyName[20], firstName[20];。 -
St 值由用户在程序的不同部分输入。如果您想查看整个程序,我可以添加它。
-
不,我不需要看。但最好在你的帖子中提及这些事情,以便人们知道它是故意遗漏的,不需要关注它(许多 SO 帖子的代码使用未初始化的变量)。