gpt4 book ai didi

c - 如何将 .Dat 文件中的字符放入字符字符串持有者编程 c

转载 作者:行者123 更新时间:2023-11-30 17:19:34 27 4
gpt4 key购买 nike

#include<stdio.h>
#define MAX 255
#define T 100

typedef struct {
char name[MAX];
int score;
} Student;

int main()
{
Student stud, temp[T];
char hnm[T][MAX];
int x,i,hsc,h;
FILE *fptr;

if ((fptr=fopen("scores.dat","a+"))==NULL) {
printf("File Opening was unsuccessful");
}
else {
scanf("%d",&x);
getchar();
for(i=0; i<x; i++) {
scanf("%s %d",&stud.name, &stud.score);
fprintf(fptr,"%s %d\n", stud.name, stud.score);
}
}
fclose(fptr);

if ((fptr=fopen("scores.dat","r"))==NULL) {
printf("File Opening was unsuccessful");
}
else {
i = 0;
temp[i].name = stud.name;
temp[i].score = stud.score;
fscanf(fptr,"%s %d", &stud.name, &stud.score);
while(!feof(fptr)) {
temp[i].name = stud.name;
temp[i].score = stud.score;
fscanf(fptr,"%s %d", &stud.name, &stud.score);
i++;
}
system("pause");
x=sizeof(fptr);
}
fclose(fptr);

for(i=0;i<x-1;i++) {
for(h=0;h<x-i-1;h++) {
if(temp[h].score<temp[h+1].score) {
hsc=temp[h].score;
temp[h].score=temp[h+1].score;
temp[h+1].score=hsc;

hnm[h]=temp[h].name;
temp[h].name=temp[h+1].name;
temp[h+1].name = hnm[h];
}
}
}

for(i=0;i<20;i++){
printf("%s %d\n",temp[i].name1, temp[i].score);
}

if((fptr=fopen("scores.dat","w"))==NULL) {
printf("File Opening was unsuccessful");
}
else {
for(i=0;i<20;i++){
fprintf(fptr,"%s %d\n", temp[i].name, temp[i].score);
printf("Top #%d: %s %d\n",i+1, temp[i].name, temp[i].score);
}

}
fclose(fptr);


return 0;
}

代码很简单,程序会要求用户输入测试用例的数量,并询问名称和分数。

示例输入:

 4
Name1 100
Name2 900
Name3 800
Name4 150

然后将其放入 .Dat 文件中。然后从高到低排序。然后输出前 20 名(因此如果某些分数在数据中,则只有 20 名,它将被忽略。)

代码中我唯一的问题是如何从文件中获取它。我知道如何排序。但我怎样才能得到它呢?

最佳答案

  1. 您需要在 fcanf 之后使用换行符

  2. 您需要使用strcpy复制学生姓名。

使用这个:

        i = 0;            
fscanf(fptr,"%s %d", &stud.name, &stud.score);
fgetc(fptr);
while(!feof(fptr)) {
strcpy(temp[i].name,stud.name);
temp[i].score = stud.score;
fscanf(fptr,"%s %d", &stud.name, &stud.score);
fgetc(fptr);
i++;
}
system("pause");
x=sizeof(fptr);

关于c - 如何将 .Dat 文件中的字符放入字符字符串持有者编程 c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870708/

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