C语言,把文件中数据列到屏幕上,可以修改数据(答对加分)

来源:百度知道 编辑:UC知道 时间:2024/09/19 18:24:46
应该是个简单的问题,但是我老是得不出正确的结果不知道为什么

要求如下
“books.dat”里面有如下内容
0
ON_SHELF
Smith,John A.
1997
A day in the Life of a Software Developer
Dallas,Texas
Generic Publishing House

1
ON_SHELF
Sheely, David E.
2004
Can You Read This Book Title?
Arlington,Texas
NoNmae Publishing House

2
ON_SHELF
Johnson,Jane
2000
Another Random Book Title
Fort Worth, Texas
Nondescript Publishing House

也就是3本书的
编码
状态
作者
年份
名字
出版地
出版商

程序需要把这个book.dat里面的3本书信息列到屏幕上,每本书的信息,列在一个横行里,2本书之间用空行隔开。
(这个很简单,但是我找书一步一步做还是出错)

第2个就是可以把特定一本书(需要使用者选择书的编码)里面的ON SHELF 改成CHECKED OUT

就这2个要求
希望大侠们相助。
我是在XP下用DEV CPP编译的
如果可以通过编译,再家50分
在线等
没错,只要满足那2个要求,然后通过编译就行了
那位大虾能帮帮我的,也可以加我QQ280236036

写得比较简单,具体过程是先从文件读出所有书籍的数据,然后打印出来,接着改变某一本书的状态,最后把所有书籍的数据再写回文件.
需要注意的是books.dat中的每一行必须以\n结尾,这是程序的需要.
在VC6.0下编译运行成功,使用标准库调用,应该可移植到DEV CPP之上.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

#define MAX_STR_LENGTH 64

typedef struct _BookInfo
{
int index;
char state[12];
char author[MAX_STR_LENGTH];
char year[5];
char name[MAX_STR_LENGTH];
char addr[MAX_STR_LENGTH];
char comp[MAX_STR_LENGTH];
} BookInfo;

typedef struct _BookNode
{
BookInfo info;
struct _BookNode *next;
} BookNode;

int ReadBookInfo(FILE *file, BookInfo *info)
{
char buffer[1024];
int step;

memset(info, 0, sizeof(BookInfo));
step = 0;
while (fgets(buffer, 1024, file))
{
if (buffer[0] == '\n')
{
continue;
}

switch (step)