本文最后更新于 894 天前,其中的信息可能已经过时,如有错误请发送邮件到 echobydq@gmail.com
#include <stdio.h> #include <string.h> char * s_gets(char * st, int n); #define MAXTITL 40 #define MAXAUTL 40 #define MAXBKS 100 //最大书籍数 struct book { //建立book结构声明 char title[MAXTITL]; char author[MAXAUTL]; float value; }; int main(void) { struct book library[MAXBKS]; //book 类型结构的数组 int count = 0; int index; printf("Please enter the book title.\n"); printf("Press [enter] at the start of a line to stop.\n"); while (count < MAXBKS && s_gets(library[count].title, MAXTITL) != NULL && library[count].title[0] != '\0') //library[count].title[0] != '\0'判断字符串中的首字符是否为空字符 //按下 Enter 键相当于输入了一个字符串 { printf("Now enter the author.\n"); s_gets(library[count].author, MAXAUTL); printf("Now enter the value.\n"); scanf("%f", &library[count++].value); while (getchar() != '\n') continue; //清理输入行 if (count < MAXBKS) printf("Enter the next title.\n"); } if (count > 0) { printf("Here is the list of your books:\n"); for (index = 0; index < count; index++) printf("%s by %s: $%.2f\n", library[index].title, library[index].author, library[index].value); } else printf("No books? Too bad.\n"); return 0; } char * s_gets(char * st, int n) { char * ret_val; char * find; ret_val = fgets(st, n, stdin); if (ret_val) { find = strchr(st, '\n'); // 查找换行符 if (find) //如果地址不是NULL *find = '\0'; // 在此处放置一个空字符 else while (getchar() != '\n') continue; // 处理输入行中剩余的字符 } return ret_val; }