编程序将文本文件中的内容读取到结构体类型数组中保存,并输出到屏幕。结构体类型包括图书名称、图书作者、图书价格和库存4项成员,文件名为”books.txt“,打开文件的语句中请勿写文件路径,仅给出文件名即可;读取文件采用fscanf函数。C语言
时间: 2024-02-13 18:59:43 浏览: 49
编写程序,该程序实现打开一个文本文件,每次读取一行内容,将每行作为一个字符串读入,并将字符串输出显示到屏幕上。
5星 · 资源好评率100%
好的,下面是代码实现:
```c
#include <stdio.h>
#define MAX_BOOKS 100
#define MAX_NAME_LEN 50
#define MAX_AUTHOR_LEN 30
struct Book {
char name[MAX_NAME_LEN];
char author[MAX_AUTHOR_LEN];
float price;
int stock;
};
int main() {
struct Book books[MAX_BOOKS];
int count = 0;
FILE *fp = fopen("books.txt", "r");
if (fp == NULL) {
printf("Failed to open file!\n");
return 1;
}
while (count < MAX_BOOKS && fscanf(fp, "%s %s %f %d", books[count].name, books[count].author, &books[count].price, &books[count].stock) == 4) {
count++;
}
fclose(fp);
for (int i = 0; i < count; i++) {
printf("Book %d:\nName: %s\nAuthor: %s\nPrice: %.2f\nStock: %d\n", i+1, books[i].name, books[i].author, books[i].price, books[i].stock);
}
return 0;
}
```
解释一下代码:
- 定义了一个结构体类型 Book,包括图书名称、图书作者、图书价格和库存4项成员;
- 定义了一个结构体类型数组 books,长度为 MAX_BOOKS;
- 定义了一个变量 count,用于统计读取的图书数量;
- 使用 fopen 函数打开文件 books.txt,读取模式为只读("r");
- 如果打开文件失败,输出一条错误信息并返回 1;
- 使用 while 循环读取文件,每次读取一行,并使用 fscanf 函数将读取到的内容存储到结构体数组 books 中;
- 如果读取的行数超过了 MAX_BOOKS,或者读取到的内容不足 4 项,则退出循环;
- 使用 fclose 函数关闭文件;
- 使用 for 循环遍历结构体数组 books,输出每本书的信息;
- 返回 0,表示程序正常结束。
希望这个程序能够帮助到你!
阅读全文