不要c++,要c语言
时间: 2024-10-19 09:10:52 浏览: 10
c++实现c语言子集编译器
3星 · 编辑精心推荐
在C语言中,创建一个基于顺序存储结构的图书信息表的程序同样需要以下几个步骤:
1. 定义结构体:创建一个名为`book`的结构体来存储图书信息,包含`char* isbn`, `char* title`, 和`float price`。
```c
typedef struct {
char* isbn;
char* title;
float price;
} Book;
```
2. 初始化数组:声明一个`Book`类型的数组`books`和一个整型变量`bookCount`用于记录书籍数量。
```c
Book books[MAX_BOOKS]; // MAX_BOOKS是你设定的最大书籍数量
int bookCount = 0;
```
3. 输入处理:使用循环从标准输入读取数据,直到遇到结束标志。
```c
while (scanf("%[^0 ]%[^0 ]%f", books[bookCount].isbn, books[bookCount].title, &books[bookCount].price) == 3) {
if (isdigit(books[bookCount].isbn[0]) && isdigit(books[bookCount].title[0])) {
bookCount++;
} else {
printf("Invalid input!\n");
scanf("%*[^\n]"); // 清除剩余的输入
}
}
```
这里使用`isdigit()`检查是否为数字字符,如果不是则提示错误并跳过剩余输入。
4. 输出结果:在输入结束后,打印总数和每本书的信息。
```c
printf("总计%d行\n", bookCount);
for (int i = 0; i < bookCount; i++) {
printf("%s %s %.2f\n", books[i].isbn, books[i].title, books[i].price);
}
```
完整的C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char* isbn;
char* title;
float price;
} Book;
int main() {
const int MAX_BOOKS = 100;
Book books[MAX_BOOKS];
int bookCount = 0;
while (bookCount < MAX_BOOKS) {
char isbn[20], title[50];
float price;
if (scanf("%19s %49s %f", books[bookCount].isbn, books[bookCount].title, &price) != 3) {
printf("Invalid input!\n");
scanf("%*[^\n]"); // 清除剩余的输入
} else {
books[bookCount].price = price;
bookCount++;
}
}
printf("总计%d行\n", bookCount);
for (int i = 0; i < bookCount; i++) {
printf("%s %s %.2f\n", books[i].isbn, books[i].title, books[i].price);
}
return 0;
}
```
注意:C语言的`scanf`处理字符串可能有安全隐患,实际应用中可能需要更严格的输入验证。
阅读全文