【发布时间】:2020-06-23 13:49:25
【问题描述】:
我想搜索我为该书添加的结构(并打印该书的其他详细信息),以查找用户在 .txt 文件中输入的特定 issueNumber。
当我运行代码时,它会在要求用户输入 (issueNumber-issuenumber) 后终止。
我不明白这背后的问题,我认为 while 循环(其中的代码)存在一些问题。
此外,我在 Internet 上找不到任何关于文件处理的好资源(可能仅适用于文本模式)。如果有人建议好的资源会很有帮助。
下面是我搜索 issueNumber 和打印其他详细信息的代码。
我的结构:
struct data
{
char author[25];
int issueNumber;
char title[25];
int issued;
};
我的搜索功能:
void searchBookByIssueNumber(FILE *fp)
{
struct data data2;
data2.issued = 0;
int issuenumber = 0;
printf("enter issue no.");
scanf("%d", &issuenumber);
while (fscanf(fp, "%s %d %s %d\n", data2.author, &data2.issueNumber, data2.title, &data2.issued) != EOF)
{
if (data2.issueNumber == issuenumber)
{
fseek(fp, -5, SEEK_CUR);
printf("%s %d %s", data2.author, data2.issueNumber, data2.title);
}
}
fclose(fp);
}
启动功能:
void start(FILE *fp)
{
printf("---------------------------------------------------\n");
printf("| |\n");
printf("| WELCOME TO LIBRARY MANAGEMENT |\n");
printf("| |\n");
printf("---------------------------------------------------\n");
/*login();*/
/*addBook(fp);*/
searchBookByIssueNumber(fp);
}
主要功能:
int main()
{
FILE *fp;
fp = fopen("c1.txt", "w+");
start(fp);
return 0;
}
【问题讨论】:
-
请注意:不要使用
gets。这是非常不安全的。不过,对于你的问题,你有没有打电话给searchBookByIssueNumber?请出示minimal reproducible example。 -
你知道
fp = fopen("c1.txt", "w+");会截断文件,不是吗? -
不,我认为它不会,它会覆盖,但这里我只是从 id 查找函数 @user:3545273 中的文件中读取
-
@user:733637 ,我的文件只有文本文件,为什么说不是.txt文件
-
文件的非文本内容我错了。
标签: c io file-handling