gpt4 book ai didi

c - C语言写入txt文件并打印数据

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

我必须制作需要用户执行以下操作的程序:

enter surname (17 letters max)

enter name (11 letters max)

enter subject (20 letters max)

enter number of points (number between 0 and 50)

输入需要重复,输入END作为姓氏后结束,然后关闭txt文件

之后,我必须编写打开 txt 文件的函数,读取它并以这种格式打印其中的所有数据:

surname|name|subject|points
-----------------------------
-----------------------------
doe|jane|math|36
doe|john|programming|45

在同一函数中,我必须找到哪个条目具有最低的点数,然后打印它(如果有两个条目具有相同的点数,则打印找到的最后一个)。之后,在同一个函数中,我必须计算文件有多大并以字节为单位打印它。

我设法编写代码来输入名称并将其写入txt文件,但我无法完成程序的其余部分,有人知道如何做吗?

这是我的代码:

#include <stdio.h>

int main()
{
FILE *inputfile = NULL;
FILE *outfile = NULL;
struct imenik
{
char surname[17 + 1];
char name[11 + 1];
char subject[20 + 1];
int points;
} imen;

outfile = fopen("new.txt", "w");

printf("Enter surname: ");
scanf("%s ", imen.surname);

printf("Enter name: ");
scanf("%s ", imen.name);

printf("Enter course: ");
scanf("%s ", imen.subject);

printf("Enter points (0 - 50): ");
scanf("%d ", &imen.points);


printf("\n %s|%s|%s|%d", imen.name, imen.surname, imen.subject, imen.points);

fprintf(outfile, "\n %s|%s|%s|%d", imen.name, imen.surname, imen.subject, imen.points);
fclose(outfile);

return 0;

}

最佳答案

  • 首先,请确保检查 fopen 的返回代码。如果无法打开文件,您应该在那里停止该功能。
  • 不要使用 scanf 来扫描字符串。这是不安全的,因为字符串结果可能未绑定(bind),请改用 scanf_sfgets
  • 要计算最小值或总和,请使用累加器。一个变量,您可以在每个步骤中更新以匹配您尝试计算的内容。例如。计算 int 数组的最小值的索引,

.

//the array
int arr[] = {3,1,4,2,3,0};

//accumulators
int min_value = INT_MAX; /* INT_MAX defined in "limits.h" */
int min_index = -1;

//steps
for( int i = 0; i < 6; ++i ) {
if( arr[i] < min_value ) {
min_value = arr[i];
min_index = i;
}
}
  • 要循环,请使用 do{...}while(...); 循环,并使用 strncmp 比较 C 字符串(它返回 0(如果它们相同)。

关于c - C语言写入txt文件并打印数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280664/

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