【问题描述】编程序将结构体类型数组中的内容保存至文本文件中,并输出到屏幕。结构体类型包括图书名称、图书作者、图书价格和库存4项成员,文件名为”books.txt“,保存位置为e盘。提示:保存数据到文件使用fprintf函数。 【输入形式】无 【输出形式】每行一个数组元素,共3行 【样例输入】 【样例输出】 C_programming,Tony,38.500000,6 English,Amy,43.500000,4 Computer_game,Wiya,47.000000,5 【样例说明】 【评分标准】 #include<stdio.h> #include<stdlib.h> int main(void) { struct book { char bkname[30]; char author[15]; float price; int stock; }b[3]={{"C_programming","Tony",38.5,6},{"English","Amy",43.5,4},{"Computer_game","Wiya",47,5}}; int i;
时间: 2024-02-13 15:59:44 浏览: 59
编写程序,该程序实现打开一个文本文件,每次读取一行内容,将每行作为一个字符串读入,并将字符串输出显示到屏幕上。
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] = {
{"C_programming", "Tony", 38.5, 6},
{"English", "Amy", 43.5, 4},
{"Computer_game", "Wiya", 47, 5}
};
int count = 3;
FILE *fp = fopen("e:\\books.txt", "w");
if (fp == NULL) {
printf("Failed to open file!\n");
return 1;
}
for (int i = 0; i < count; i++) {
fprintf(fp, "%s %s %.2f %d\n", books[i].name, books[i].author, books[i].price, books[i].stock);
}
fclose(fp);
fp = fopen("e:\\books.txt", "r");
if (fp == NULL) {
printf("Failed to open file!\n");
return 1;
}
char buffer[100];
while (fgets(buffer, 100, fp)) {
printf("%s", buffer);
}
fclose(fp);
return 0;
}
```
解释一下代码:
- 定义了一个结构体类型 Book,包括图书名称、图书作者、图书价格和库存4项成员;
- 定义了一个结构体类型数组 books,长度为 MAX_BOOKS;
- 定义了一个变量 count,用于统计图书数量;
- 使用结构体数组初始化的方式初始化结构体数组 books;
- 使用 fopen 函数打开文件 e:\books.txt,写入模式为覆盖("w");
- 如果打开文件失败,输出一条错误信息并返回 1;
- 使用 for 循环遍历结构体数组 books,使用 fprintf 函数将结构体数组中的内容保存到文件中;
- 使用 fclose 函数关闭文件;
- 使用 fopen 函数以只读模式("r")重新打开文件 e:\books.txt;
- 如果打开文件失败,输出一条错误信息并返回 1;
- 定义一个字符数组 buffer,用于存储从文件中读取的一行内容;
- 使用 while 循环读取文件,每次读取一行,并使用 fgets 函数将读取到的内容存储到字符数组 buffer 中;
- 输出字符数组 buffer 中的内容;
- 使用 fclose 函数关闭文件;
- 返回 0,表示程序正常结束。
希望这个程序能够帮助到你!
阅读全文