gpt4 book ai didi

c - 输出格式错误

转载 作者:行者123 更新时间:2023-11-30 14:59:24 28 4
gpt4 key购买 nike

#include <stdio.h>
int main()
{
int i;
char surname[30];
char name[30], matricno[10];
int A, B, C;
FILE *file, *file1;
/* Open an existing file */
file = fopen("Broadsheett.txt","r");
if(file == NULL){
printf("Error: Unable to open a file");
}
file1 = fopen("newbroadsheet.txt", "w");
fprintf(file1, "University of Nairaland\n");
fprintf(file1, "Department of Programming\n");
fprintf(file1, "================================\n");
while (!feof(file)) {
fscanf(file, "%s\t%s\t%d\t%d\n", &name, &matricno, &A, &B);
fprintf(file1, "%s\t%s\t%d\t%d\n", name, matricno, A, B);
}
}

输出文件格式不正确。我不知道外壳是从哪里来的。

Output file

最佳答案

您的输入文件显然有一个标题:

Name MatricNo A B

在第一次迭代中,fscanf 成功读取字符串变量 namematricno;但是,读取数字失败,因为它看到 A。因此它打印 namematricno,即值 NameMricNo 并打印整数 A 和 B 的值,未初始化,因此是垃圾。

在第二次迭代中,fscanf 从上次停止的地方继续读取字符串 AB( header 的最后一部分),但再次读取读取整数失败。因此,它现在打印 AB,并再次打印变量 A 和 B 的统一值。

现在一切都再次同步,并且可以正常打印其余内容。

所以您应该检查fscanf的返回值。另外,while (feof)) 是错误的,因为它告诉您读取操作遇到了 EOF。因此它不会告诉您文件中是否还剩下某些内容,而您认为 feof 会这样做。最后,将数组传递给函数会导致编译器将数组的地址提供给函数,因此不要将 & 放在 namematricno< 之前 在对 fscanf 的调用中(编译器显然会忽略它,但可能会发出警告)。

关于c - 输出格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42756684/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com