gpt4 book ai didi

c - 从文件中读取字符串和整数

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

我一直在尝试从文件中读取一些字符串和整数,但似乎我做得不正确...这个程序应该从文件中读取数据...它必须创建一个列表作家的名字。对于每个作家,它应该使用像我在这里使用的那样的结构...对于每个作家的文本,我还必须创建一个结构,就像我在这里所做的那样...然后,我必须对列表,创建另一个包含最受欢迎作家的列表,然后打印输出...我的程序是:

#include<stdio.h>
#include<math.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>

struct AuthorRecord {
char textTitle[30];
long Download;
struct AuthorRecord *next;
};
typedef struct AuthorRecord *AuthorRecordType;
typedef struct {
char firstName[30];
char lastName[30];
int idNumber,s1;
long s2;
float p;
AuthorRecordType text;
} AuthorType;
struct MemberNodeStruct {
AuthorType *anAuthor;
struct MemberNodeStruct *next;
};
typedef struct MemberNodeStruct *MemberNodeType;

int main()
{

int m,n,i,j,d,z,e,y;
long k;
char s[30];
AuthorType *a;
struct MemberNodeStruct *l,*l2,*temp,*min,*b1,*b2,*r,*r2,*r3;
struct AuthorRecord *t,*t2,*h,*h2,*min2,*temp2;
FILE *f;
f=fopen("project.txt","rt");
if(f==NULL)
exit(-1);
l2=NULL;
t2=NULL;
t=NULL;
fscanf(f,"%d",&n);
getchar();
for(i=1;i<=n;i++)
{
y=0;
a=(AuthorType*)malloc(sizeof( AuthorType));
fgets(s,30,f);
strcpy(a->firstName,s);
fgets(s,30,f);
strcpy(a->lastName,s);
fscanf(f,"%d",&d);
getchar();
a->idNumber=d;
fscanf(f,"%d",&m);
getchar();
t2=NULL;
a->s1=m;
a->s2=0;
for(j=1;j<=m;j++)
{
t=(struct AuthorRecord*)malloc(sizeof(struct AuthorRecord));
fgets(s,30,f);
e=0;
h=t2;
while(e==0 && h!=NULL)
{
if(strcmp(h->textTitle,s)==0)
{
e=1;
h2=h;
}
else
h=h->next;
}
if(e==0)
{
strcpy( t->textTitle,s);
fscanf(f,"%ld",&k);
getchar();
t->Download=k;
a->s2=a->s2+t->Download;
t->next=t2;
t2=t;
}
else
{
y=y+1;
fscanf(f,"%ld",&k);
getchar();
h2->Download=h2->Download+k;
a->s2=a->s2+k;
}
}
a->s1=a->s1-y;
a->p=round(a->s2/a->s1);
a->text=t2;
l=(struct MemberNodeStruct*)malloc(sizeof(struct MemberNodeStruct));
l->anAuthor=a;
l->next=l2;
l2=l;
}




........ (150 more lines of code)
.....
system("pause")
return(0);

我已经用 scanf 尝试过这个程序,并使用 gets 而不是文件和 fscanffgets 并且它工作正常......这就是这是我没有编写其余代码的原因。

project.txt 是:

5
Julius Caesar 101
2
DeBelloGallico
3000
DeBelloCivili
8000
Sun Tzu 544
3
TheArtOfWar
5000
TheArtOfWar
5000
Strategems
3000
Plato Athenian 427
4
TrialOfSocrates
10000
Symposium
15000
TheRepublic
7000
Apology
9000
Gaius Suetonius 69
3
thetwelvecaesars
7000
dePoetis
500
DeClarisRhetorebus
1000
Orestis Mastakas 1995
1
WhyDidRomePrevail
15

每当我运行这个程序时,它都会以失败告终...出于某种原因,它需要我输入...我尝试删除 getchar() 但仍然不起作用!我该怎么办?

最佳答案

它从标准输入读取输入,因为你告诉它这样做:

fscanf(f,"%d",&n); 
getchar();

尝试确保您没有任何内容从默认值(文件描述符 0)读取输入。如果您需要从 f 读取 1 个字符,请使用 fgetc 而不是 getchar。

关于c - 从文件中读取字符串和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985309/

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