📄 comment.cpp
字号:
mvwaddstr(win,y,x,tmpstr); wmove(win,y,x); do { getyx(win, y1, x1); if (x1 <= x) lflag = 1; else lflag = 0; if (x1 >= x + leng - 1) rflag = 1; else rflag = 0; j = wgetch(win); if (j > 31 && j < 256 && j != 127) { if ( funstatus(type, (char)j) ) { beep(); continue; } if (insflag) inschstrover( (char )j, cur_posi , s); else covchstr( (char)j , cur_posi , s ); modiflag = 1; if (rflag == 0) { cur_posi++; wmove(win, y1, x1+1 ); } else wmove(win,y1,x1); } else switch (j) { case 1: insflag = !insflag; break; case 8: if (lflag == 1) wmove(win,y,x); else { bkspchstr(s, cur_posi); cur_posi--; wmove(win, y1, x1 - 1); } modiflag = 1; break; case 9: showmessage(helpy, helpx, helpstr); touchwin(win); wrefresh(win); break; case 127: delchstr(s, cur_posi); wmove(win, y1, x1); modiflag = 1; break; case 260: if (lflag == 0) { cur_posi--; wmove(win, y1, x1 - 1); } else endloop = 1; break; case 261: if (rflag == 0){ cur_posi++; wmove(win, y1, x1 + 1); } else endloop = 1; break; default: endloop = 1; } } while (endloop == 0); if (modiflag) j = -j; return j;}/*以密码的形式输入字符串*//*#define geteditpass(a,b,c,d,e) _geteditpass(a,b,c,d,e,0,0,"")*/int _geteditpass(WINDOW *win, int y, int x, int len, char *value, int hlpy, int hlpx, char *hlp){ /*** void inschstr(char,int,char *); void _showtmessage(int,int,char *,char *,int); void delchstr(char *,int); ***/ int modi = 0, key, ins = 0, pos = 0, i, rlen, eflag = 1; keypad(win, 1); while (eflag == 1) { rlen = strlen(value); wmove(win, y, x); for (i = 0; i < len; i++, waddch(win, '*')); wmove(win, y, pos + x); wrefresh(win); key = wgetch(win); if ((key > 31) && (key < 256)) if (ins) if (rlen < len) { inschstr(key, pos, value); modi = 1; pos++; } else beep(); else if (pos < len) { value[pos] = key; pos++; modi = 1; } else beep(); else switch (key) { /* * case 3: * case 4: * case 10: * case 16: * case 25: * case KEY_UP: * case KEY_DOWN: * eflag=0; * break; */ case 9: if (strlen(hlp) > 0) { showtmessage(hlpy, hlpx, "[提 示]", (char *)hlp); touchwin(win); wrefresh(win); } break; case 1: ins = !ins; break; case 24: delchstr(value, pos); modi = 1; break; case 260: if (pos > 0) pos--; else eflag = 0; break; case 261: if (pos < rlen) pos++; else { beep(); eflag = 0; } break; case 8: if (pos > 0) { pos--; delchstr(value, pos); modi = 1; } else beep(); break; default: eflag = 0; break; } } if (modi) key = -key; return(key);}/*输入数字字符串*//*#define getnumstr(a,b,c,d,e) _getnumstr(a,b,c,d,e,0,0,"")*/int _getnumstr(WINDOW *win, int y, int x, int len, char *value, int hlpy, int hlpx, char *hlp){ /*** void inschstr(char,int,char *); void _showtmessage(int,int,char *,char *,int); void delchstr(char *,int); ***/ int modi = 0, key, ins = 0, pos = 0, i, rlen, eflag = 1; keypad(win, 1); while (eflag == 1) { rlen = strlen(value); mvwaddstr(win, y, x, value); for (i = rlen; i < len; i++, waddch(win, ' '), value[i] = 0); wmove(win, y, pos + x); wrefresh(win); key = wgetch(win); if ((key >= '0') && (key <= '9')) if (ins) if (rlen < len) { inschstr(key, pos, value); modi = 1; pos++; } else beep(); else if (pos < len) { value[pos] = key; pos++; modi = 1; } else beep(); else switch (key) { case 3: case 4: case 10: case 16: case 25: case 259: case 258: eflag = 0; break; case 9: if (strlen(hlp) > 0) { showtmessage(hlpy, hlpx, "[提 示]", (char *)hlp); touchwin(win); } break; case 1: ins = !ins; break; case 24: delchstr(value, pos); modi = 1; break; case 260: if (pos > 0) pos--; else eflag = 0; break; case 261: if (pos < rlen) pos++; else { beep(); eflag = 0; } break; case 8: if (pos > 0) { pos--; delchstr(value, pos); modi = 1; } else beep(); break; default: beep(); break; } } if (modi) key = -key; return(key);}/*产生随机文件名*/void randstr(char *str2, char *str){ short pid; pid = getpid(); sprintf(str, "%s%d", str2, pid);}/*把"\DD"(其中DD为一个两位的十进制数)字符串形式转化为ASCII码形式*/void Si_toasc(char *str){ char s[256] = "", str1[256] = "", str2[4] = "", num[3]; int i, j, number = 0; strcpy(s, str); for (i = 0, j = 0; s[i] != '\0'; i++, j++) { if (s[i] == '\\') { num[0] = s[i+1]; num[1] = s[i+2]; num[3] = '\0'; number = atoi(num); sprintf(str2, "%c", (char)number); str2[strlen(str2)] = '\0'; strcat(str1, str2); i += 2; } else str1[j] = s[i]; } str1[strlen(str1)] = '\0'; for (i = 0; str1[i] != '\0'; i++) str[i] = str1[i]; str[i] = '\0';}/*循环截取以ch为间隔的每段字符串*/char *xiastrtok(char *s1, char ch, char *s2){ while (1) { if ((*s1) != ch && (*s1) != '\0' && (*s1) != '\n') { (*s2) = (*s1); s1++; s2++; } else { if ((*s1) != '\0') s1++; (*s2) = '\0'; return s1; } }}void int_SDATE(int i, char *s){ s[0] = '\0'; if (i < 100) { switch (i) { case 1: strcpy(s, "零壹"); break; case 2: strcpy(s, "零贰"); break; case 3: strcpy(s, "零叁"); break; case 4: strcpy(s, "零肆"); break; case 5: strcpy(s, "零伍"); break; case 6: strcpy(s, "零陆"); break; case 7: strcpy(s, "零柒"); break; case 8: strcpy(s, "零捌"); break; case 9: strcpy(s, "零玖"); break; case 10: strcpy(s, "壹拾"); break; case 11: strcpy(s, "壹拾壹"); break; case 12: strcpy(s, "壹拾贰"); break; case 13: strcpy(s, "壹拾叁"); break; case 14: strcpy(s, "壹拾肆"); break; case 15: strcpy(s, "壹拾伍"); break; case 16: strcpy(s, "壹拾陆"); break; case 17: strcpy(s, "壹拾柒"); break; case 18: strcpy(s, "壹拾捌"); break; case 19: strcpy(s, "壹拾玖"); break; case 20: strcpy(s, "贰拾"); break; case 21: strcpy(s, "贰拾壹"); break; case 22: strcpy(s, "贰拾贰"); break; case 23: strcpy(s, "贰拾叁"); break; case 24: strcpy(s, "贰拾肆"); break; case 25: strcpy(s, "贰拾伍"); break; case 26: strcpy(s, "贰拾陆"); break; case 27: strcpy(s, "贰拾柒"); break; case 28: strcpy(s, "贰拾捌"); break; case 29: strcpy(s, "贰拾玖"); break; case 30: strcpy(s, "叁拾"); break; case 31: strcpy(s, "叁拾壹"); break; default: strcpy(s, "error!"); } } else { int j; char str[5] = ""; sprintf(str, "%d", i); for (j = 0; j < 4; j++) { switch (str[j]) { case '0': strcat(s, "零"); break; case '1': strcat(s, "壹"); break; case '2': strcat(s, "贰"); break; case '3': strcat(s, "叁"); break; case '4': strcat(s, "肆"); break; case '5': strcat(s, "伍"); break; case '6': strcat(s, "陆"); break; case '7': strcat(s, "柒"); break; case '8': strcat(s, "捌"); break; case '9': strcat(s, "玖"); break; default : strcat(s, "error!"); } } }}/* *把日期数字转化为大小写字符串.其中bz为0,则为小写;否则,为大写 *返回值<0,则程序出错; * =0,则转化为小写; * >0,则转化为大写 */int rq_min_max(char *str, char *year, char *month, char *day, int bz){ /*** void int_SDATE(int, char *); int myrdatestr(long,char *); ***/ int i, j, numy = 0, numm = 0, numd = 0; for (i = 0, j = 0; i < 4; i++, j++) year[j] = str[i]; year[j] = '\0'; for (i = 5, j = 0; i < 7; i++, j++) month[j] = str[i]; month[j] = '\0'; for (i = 8, j = 0; i < 10; i++, j++) day[j] = str[i]; day[j] = '\0'; if (!bz) return 0; numy = atoi(year); numm = atoi(month); numd = atoi(day); int_SDATE(numy, year); int_SDATE(numm, month); int_SDATE(numd, day); return 1;}/*判断参数是否为闰年,返回值为零则代表是,为壹则代表否*/int Isleapyear(int year){ if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) return 0; else return 1;}/* *判断year,mon,day 是否合法 *返回值<0,则表明年月日不合法 * =0,则表明年月日合法 */int Isdate(int year, int mon, int day){ int Isleapyear(int); int mbase; if (year < 1899) return - 1; switch (mon) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: mbase = 31; break; case 2: if (!Isleapyear(year)) mbase = 29; else mbase = 28; break; case 4: case 6: case 9: case 11: mbase = 30; break; default: return - 2; } if (day > mbase) return - 3; else return 0;}/* *把日期形式的字符串转化为长整型数字 *返回值<0,则表明转化有错 * =0,则表明转化正确 */int myrstrdate(char *rqchr, long *rqlong){ /*** int Isdate(int, int, int); int Isleapyear(int); ***/ int i, year, mon, day; int ts, mbase; char tmp[10]; if (strlen(rqchr) < 10) return - 1; rqchr[11] = 0; strcpy(tmp, rqchr); tmp[4] = 0; year = atoi(tmp); sprintf(tmp, &rqchr[5]); tmp[2] = 0; mon = atoi(tmp); sprintf(tmp, &rqchr[8]); tmp[2] = 0; day = atoi(tmp); if (Isdate(year, mon, day) != 0) return - 2; ts = 0; for (i = 1900; i < year; i++) if (!Isleapyear(i)) ts++; for (i = 1; i < mon; i++) { switch (i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: mbase = 31; break; case 2: if (!Isleapyear(year)) mbase = 29; else mbase = 28; break; case 4: case 6: case 9: case 11: mbase = 30; break; } ts = ts + mbase; } *rqlong = (year - 1900) * 365 + ts + day; return 0;}/* *把长整型数字转化为日期形式的字符串 *返回值<0,则表明转化有错 * =0,则表明转化正确 */int myrdatestr(long rqlong, char *rqchr){ /*int Isleapyear(int);*/ int year, mon, day; int i, ybase, mbase; if (rqlong < 0) return - 1; if (rqlong == 0) { strcpy(rqchr, "1899/12/31"); return 0; } year = 1900; while (1) { if (Isleapyear(year)) ybase = 366; else ybase = 365; if (rqlong > ybase ) { rqlong = rqlong - ybase; year++; } else break; } for (mon = 1; mon < 12; mon++) { switch (mon) { case 1: case 3: case 5:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -