亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? curses.c

?? 在beginning linux programming 書中提供的第六章的有關代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    if (len > 0 && string[len - 1] == '\n')	string[len - 1] = '\0';}/*   add_record   Add a new CD to the collection */void add_record(){    char catalog_number[MAX_STRING];    char cd_title[MAX_STRING];    char cd_type[MAX_STRING];    char cd_artist[MAX_STRING];    char cd_entry[MAX_STRING];    int screenrow = MESSAGE_LINE;    int screencol = 10;    clear_all_screen();    mvprintw(screenrow, screencol, "Enter new CD details");    screenrow += 2;    mvprintw(screenrow, screencol, "Catalog Number: ");    get_string(catalog_number);    screenrow++;    mvprintw(screenrow, screencol, "      CD Title: ");    get_string(cd_title);    screenrow++;    mvprintw(screenrow, screencol, "       CD Type: ");    get_string(cd_type);    screenrow++;    mvprintw(screenrow, screencol, "        Artist: ");    get_string(cd_artist);    screenrow++;    mvprintw(15, 5, "About to add this new entry:");    sprintf(cd_entry, "%s,%s,%s,%s", catalog_number, cd_title, cd_type, cd_artist);    mvprintw(17, 5, "%s", cd_entry);    refresh();    move(PROMPT_LINE, 0);    if (get_confirm()) {	insert_title(cd_entry);	strcpy(current_cd, cd_title);	strcpy(current_cat, catalog_number);    }}/*   count_cds - scan the database and count titles and tracks */void count_cds(){    FILE *titles_fp, *tracks_fp;    char entry[MAX_ENTRY];    int titles = 0;    int tracks = 0;    titles_fp = fopen(title_file, "r");    if (titles_fp) {	while (fgets(entry, MAX_ENTRY, titles_fp))	    titles++;	fclose(titles_fp);    }    tracks_fp = fopen(tracks_file, "r");    if (tracks_fp) {	while (fgets(entry, MAX_ENTRY, tracks_fp))	    tracks++;	fclose(tracks_fp);    }    mvprintw(ERROR_LINE, 0, "Database contains %d titles, with a total of %d tracks.", titles, tracks);    get_return();}/*   find_cd - locate a CD in the database   prompt for a substring to match in the database   set current_cd to the CD title */void find_cd(){    char match[MAX_STRING], entry[MAX_ENTRY];    FILE *titles_fp;    int count = 0;    char *found, *title, *catalog;    mvprintw(Q_LINE, 0, "Enter a string to search for in CD titles: ");    get_string(match);    titles_fp = fopen(title_file, "r");    if (titles_fp) {	while (fgets(entry, MAX_ENTRY, titles_fp)) {	    /* Skip past catalog number */	    catalog = entry;	    if (found = strstr(catalog, ",")) {		*found = 0;		title = found + 1;		/* Zap the next comma in the entry to reduce it to title only */		if (found = strstr(title, ",")) {		    *found = '\0';		    /* Now see if the match substring is present */		    if (found = strstr(title, match)) {			count++;			strcpy(current_cd, title);			strcpy(current_cat, catalog);		    }		}	    }	}	fclose(titles_fp);    }    if (count != 1) {	if (count == 0)	    mvprintw(ERROR_LINE, 0, "Sorry, no matching CD found. ");	if (count > 1)	    mvprintw(ERROR_LINE, 0, "Sorry, match is ambiguous: %d CDs found. ", count);	current_cd[0] = '\0';	get_return();    }}/*   remove_tracks - delete tracks from the current CD */void remove_tracks(){    FILE *tracks_fp, *temp_fp;    char entry[MAX_ENTRY];    int cat_length;    if (current_cd[0] == '\0')	return;    cat_length = strlen(current_cat);    tracks_fp = fopen(tracks_file, "r");    temp_fp = fopen(temp_file, "w");    while (fgets(entry, MAX_ENTRY, tracks_fp)) {	/* Compare catalog number and copy entry if no match */	if (strncmp(current_cat, entry, cat_length) != 0)	    fputs(entry, temp_fp);    }    fclose(tracks_fp);    fclose(temp_fp);    unlink(tracks_file);    rename(temp_file, tracks_file);}/*   remove_cd - delete the current CD from the database */void remove_cd(){    FILE *titles_fp, *temp_fp;    char entry[MAX_ENTRY];    int cat_length;    if (current_cd[0] == '\0')	return;    clear_all_screen();    mvprintw(PROMPT_LINE, 0, "About to remove CD %s: %s. ", current_cat, current_cd);    if (!get_confirm())	return;    cat_length = strlen(current_cat);    /* Copy the titles file to a temporary, ignoring this CD */    titles_fp = fopen(title_file, "r");    temp_fp = fopen(temp_file, "w");    while (fgets(entry, MAX_ENTRY, titles_fp)) {	/* Compare catalog number and copy entry if no match */	if (strncmp(current_cat, entry, cat_length) != 0)	    fputs(entry, temp_fp);    }    fclose(titles_fp);    fclose(temp_fp);    /* Delete the titles file, and rename the temporary file */    unlink(title_file);    rename(temp_file, title_file);    /* Now do the same for the tracks file */    remove_tracks();    /* Reset current CD to 'None' */    current_cd[0] = '\0';}/*   Some defines we use only for showing or entering the track information */#define BOXED_LINES    11#define BOXED_ROWS     60#define BOX_LINE_POS   8#define BOX_ROW_POS    2/*   list_tracks - list the tracks for the current CD */void list_tracks(){    FILE *tracks_fp;    char entry[MAX_ENTRY];    int cat_length;    int lines_op = 0;    WINDOW *track_pad_ptr;    int tracks = 0;    int key;    int first_line = 0;    if (current_cd[0] == '\0') {	mvprintw(ERROR_LINE, 0, "You must select a CD first. ", stdout);	get_return();	return;    }    clear_all_screen();    cat_length = strlen(current_cat);    /* First count the number of tracks for the current CD */    tracks_fp = fopen(tracks_file, "r");    if (!tracks_fp)	return;    while (fgets(entry, MAX_ENTRY, tracks_fp)) {	if (strncmp(current_cat, entry, cat_length) == 0)	    tracks++;    }    fclose(tracks_fp);    /* Make a new pad, ensure that even if there is only a single       track the PAD is large enough so the later prefresh() is always       valid.     */    track_pad_ptr = newpad(tracks + 1 + BOXED_LINES, BOXED_ROWS + 1);    if (!track_pad_ptr)	return;    tracks_fp = fopen(tracks_file, "r");    if (!tracks_fp)	return;    mvprintw(4, 0, "CD Track Listing\n");    /* write the track information into the pad */    while (fgets(entry, MAX_ENTRY, tracks_fp)) {	/* Compare catalog number and output rest of entry */	if (strncmp(current_cat, entry, cat_length) == 0) {	    mvwprintw(track_pad_ptr, lines_op++, 0, "%s", entry + cat_length + 1);	}    }    fclose(tracks_fp);    if (lines_op > BOXED_LINES) {	mvprintw(MESSAGE_LINE, 0, "Cursor keys to scroll, RETURN or q to exit");    } else {	mvprintw(MESSAGE_LINE, 0, "RETURN or q to exit");    }    wrefresh(stdscr);    keypad(stdscr, TRUE);    cbreak();    noecho();    key = 0;    while (key != 'q' && key != KEY_ENTER && key != '\n') {	if (key == KEY_UP) {	    if (first_line > 0)		first_line--;	}	if (key == KEY_DOWN) {	    if (first_line + BOXED_LINES + 1 < tracks)		first_line++;	}	/* now draw the appropriate part of the pad on the screen */	prefresh(track_pad_ptr, first_line, 0,		 BOX_LINE_POS, BOX_ROW_POS,		 BOX_LINE_POS + BOXED_LINES, BOX_ROW_POS + BOXED_ROWS);/*	wrefresh(stdscr); */	key = getch();    }    delwin(track_pad_ptr);    keypad(stdscr, FALSE);    nocbreak();    echo();}/*   update_cd - re-enter tracks for current CD   deletes all tracks for the current CD in the database   and then prompts for new ones. */void update_cd(){    FILE *tracks_fp;    char track_name[MAX_STRING];    int len;    int track = 1;    int screen_line = 1;    WINDOW *box_window_ptr;    WINDOW *sub_window_ptr;    clear_all_screen();    mvprintw(PROMPT_LINE, 0, "Re-entering tracks for CD. ");    if (!get_confirm())	return;    move(PROMPT_LINE, 0);    clrtoeol();    remove_tracks();    mvprintw(MESSAGE_LINE, 0, "Enter a blank line to finish");    tracks_fp = fopen(tracks_file, "a");    /* Just to show how, enter the information in a scrolling, boxed,       window. The trick is to set-up a sub-window, draw a box around the       edge, then add a new, scrolling, sub-window just inside the boxed       sub-window. */    box_window_ptr = subwin(stdscr, BOXED_LINES + 2, BOXED_ROWS + 2,			    BOX_LINE_POS - 1, BOX_ROW_POS - 1);    if (!box_window_ptr)	return;    box(box_window_ptr, ACS_VLINE, ACS_HLINE);    sub_window_ptr = subwin(stdscr, BOXED_LINES, BOXED_ROWS,			    BOX_LINE_POS, BOX_ROW_POS);    if (!sub_window_ptr)	return;    scrollok(sub_window_ptr, TRUE);    werase(sub_window_ptr);    touchwin(stdscr);    do {	mvwprintw(sub_window_ptr, screen_line++, BOX_ROW_POS + 2, "Track %d: ", track);	clrtoeol();	refresh();	wgetnstr(sub_window_ptr, track_name, MAX_STRING);	len = strlen(track_name);	if (len > 0 && track_name[len - 1] == '\n')	    track_name[len - 1] = '\0';	if (*track_name)	    fprintf(tracks_fp, "%s,%d,%s\n", current_cat, track, track_name);	track++;	if (screen_line > BOXED_LINES - 1) {	    /* time to start scrolling */	    scroll(sub_window_ptr);	    screen_line--;	}    } while (*track_name);    delwin(sub_window_ptr);    fclose(tracks_fp);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费电影| 日韩精品国产欧美| 国产日产欧产精品推荐色| 欧美变态凌虐bdsm| 欧美一区二区三区免费观看视频| 欧美性猛交一区二区三区精品 | 欧美日韩亚州综合| 日本韩国视频一区二区| 色婷婷精品大在线视频| 欧美综合视频在线观看| 欧美亚洲日本国产| 欧美丰满美乳xxx高潮www| 欧美精品日日鲁夜夜添| 欧美一三区三区四区免费在线看| 91精品国产一区二区三区香蕉 | 亚洲一区二区视频| 亚洲一二三区视频在线观看| 午夜视频一区二区| 极品美女销魂一区二区三区| 国产在线一区二区综合免费视频| 久久99精品网久久| 国产91对白在线观看九色| 成人三级在线视频| 91在线免费看| 欧美日韩一卡二卡三卡| 91精品欧美福利在线观看| 日韩三级精品电影久久久| 国产夜色精品一区二区av| 国产精品第五页| 亚洲第一会所有码转帖| 久久91精品久久久久久秒播| 国产不卡视频在线观看| 色老头久久综合| 欧美一区二区三区免费视频| 久久久91精品国产一区二区精品 | 日韩精品电影在线观看| 狠狠色丁香婷婷综合| 成人av免费在线观看| 欧美在线免费播放| 日韩精品一区二区三区在线| 欧美激情一区在线观看| 亚洲影院久久精品| 国内偷窥港台综合视频在线播放| 成人美女视频在线观看| 欧美日韩国产一级片| 久久久久久黄色| 亚洲综合免费观看高清完整版在线| 美美哒免费高清在线观看视频一区二区 | 日av在线不卡| 成人天堂资源www在线| 欧美色图天堂网| 久久伊人中文字幕| 一区二区三区**美女毛片| 久久精品国产精品亚洲精品| 91美女福利视频| 久久综合久久99| 亚洲国产视频一区| 国产成人精品免费| 56国语精品自产拍在线观看| 国产精品私人影院| 石原莉奈在线亚洲三区| 成人18视频日本| 亚洲精品一区二区在线观看| 一区二区三区中文字幕电影| 精品一区二区免费视频| 欧洲中文字幕精品| 中文字幕亚洲综合久久菠萝蜜| 日韩不卡一二三区| 欧洲精品在线观看| 国产精品久久久久影视| 精品综合久久久久久8888| 91精品办公室少妇高潮对白| 久久久亚洲高清| 另类小说色综合网站| 欧美性videosxxxxx| 国产精品久久久久久一区二区三区| 免费精品视频最新在线| 在线看不卡av| 中文字幕亚洲视频| 国产黄人亚洲片| 欧美精品一区二区三区视频| 午夜不卡av在线| 欧美专区日韩专区| 亚洲视频一区二区在线| 成人免费观看av| 国产亚洲va综合人人澡精品| 男女男精品视频网| 欧美精品v日韩精品v韩国精品v| 一区二区三区日韩在线观看| jiyouzz国产精品久久| 国产午夜精品一区二区三区嫩草 | 亚洲免费三区一区二区| 成人精品视频网站| 欧美国产精品一区| 成熟亚洲日本毛茸茸凸凹| 337p日本欧洲亚洲大胆色噜噜| 美日韩一区二区| 欧美一区二区在线不卡| 日韩有码一区二区三区| 欧美放荡的少妇| 婷婷六月综合亚洲| 91精品国产色综合久久ai换脸| 日韩黄色片在线观看| 欧美日韩精品综合在线| 亚洲成av人片在线观看无码| 欧美亚洲动漫精品| 视频一区免费在线观看| 欧美一区二区国产| 精品中文字幕一区二区| 精品国产一区二区在线观看| 狠狠色丁香婷婷综合| 久久久久久免费网| 成人网在线播放| 综合久久久久综合| 日本精品一区二区三区高清| 亚洲影视在线播放| 91.com在线观看| 久久精品99久久久| 国产亚洲精久久久久久| av中文字幕一区| 亚洲小说春色综合另类电影| 欧美私模裸体表演在线观看| 日韩av中文字幕一区二区| 日韩免费一区二区三区在线播放| 国内精品国产成人国产三级粉色| 国产日韩欧美一区二区三区综合| 成人精品鲁一区一区二区| 亚洲欧美日韩精品久久久久| 欧美少妇一区二区| 麻豆精品一区二区av白丝在线| 国产亚洲综合av| 色婷婷av一区二区三区大白胸| 亚洲第一主播视频| 久久久久久久久久久99999| 99久久夜色精品国产网站| 亚洲一区二区三区四区五区黄| 日韩一级二级三级| 丰满放荡岳乱妇91ww| 亚洲在线中文字幕| 欧美电影免费观看高清完整版在线| 国产精品18久久久久久久久久久久| 中文字幕在线不卡| 欧美电影在哪看比较好| 国产精品一区二区x88av| 一区二区三区在线视频免费观看| 日韩一级免费观看| 波多野结衣欧美| 日韩高清在线不卡| 国产精品污网站| 欧美一区二区视频在线观看2020 | 亚洲国产精品精华液2区45| 91欧美一区二区| 久久精品国产**网站演员| 国产精品久久精品日日| 欧美日韩激情一区二区| 国产**成人网毛片九色 | 日韩精品一二三四| 国产精品免费丝袜| 日韩一级片网址| 91蜜桃免费观看视频| 理论片日本一区| 亚洲卡通欧美制服中文| 欧美成人伊人久久综合网| 色婷婷综合五月| 国产精品资源在线| 日韩国产欧美在线播放| 亚洲人成精品久久久久久 | 蜜臀av国产精品久久久久| 国产精品久久久久久亚洲毛片 | 久久久精品综合| 欧美日韩高清一区二区三区| 高清av一区二区| 日本免费新一区视频| 亚洲精品你懂的| 国产欧美日本一区二区三区| 欧美日高清视频| 91网站最新网址| 不卡影院免费观看| 国产一区二区福利| 日本va欧美va瓶| 亚洲一区二区在线免费观看视频| 国产精品乱子久久久久| 精品国产一区二区精华| 777xxx欧美| 欧美视频三区在线播放| 92精品国产成人观看免费 | 久久精品欧美日韩精品| 欧美一区二区三区在线| 欧美性欧美巨大黑白大战| 97久久精品人人爽人人爽蜜臀| 国产精品77777| 麻豆精品视频在线观看视频| 亚洲18色成人| 一区二区三区免费在线观看| 中国色在线观看另类| 欧美韩国日本综合| 国产亚洲精品超碰| 久久久激情视频| 2022国产精品视频| 欧美精品一区男女天堂|