10 筆圖書記錄 (書號、書名、放置地點)。使用者輸入書號或部分書名,輸出對應地點。
#define MAX_BOOKS 10
#define MAX_LEN 50
typedef struct {
char id[MAX_LEN]; // 書號
char title[MAX_LEN]; // 書名
char location[MAX_LEN]; // 放置地點
} Book;
Book library[MAX_BOOKS];
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 10
#define MAX_LEN 50
typedef struct {
char id[MAX_LEN];
char title[MAX_LEN];
char location[MAX_LEN];
} Book;
void init_data(Book *lib) {
// 範例資料
strcpy(lib[0].id, "B001"); strcpy(lib[0].title, "C語言程式設計"); strcpy(lib[0].location, "A架-1層");
strcpy(lib[1].id, "B002"); strcpy(lib[1].title, "資料結構與演算法"); strcpy(lib[1].location, "A架-2層");
// ... 其餘 8 筆自行補充
}
int main(void) {
Book lib[MAX_BOOKS];
init_data(lib);
char query[MAX_LEN];
printf("請輸入書號或書名關鍵字: ");
scanf("%49s", query);
int found = 0;
for (int i = 0; i < MAX_BOOKS; i++) {
if (strcmp(lib[i].id, query) == 0 || strstr(lib[i].title, query) != NULL) {
printf("書號: %s 書名: %s 地點: %s\n", lib[i].id, lib[i].title, lib[i].location);
found = 1;
}
}
if (!found) printf("查無此書。\n");
return 0;
}
結構體陣列 + `strcmp`/`strstr` 即可完成基礎查詢。重點在於資料結構定義清晰、輸入緩衝區大小限制 (`%49s`)、邊界條件處理。