/* Write formatted output to stdout from the format string FORMAT. */
成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),成都網(wǎng)站設(shè)計(jì),廣告投放,成都做網(wǎng)站選成都創(chuàng)新互聯(lián)公司,貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
/* VARARGS1 */
int
__printf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
done = vfprintf (stdout, format, arg);
va_end (arg);
return done;
}
int _scanf(char (*get)(void), void (*unget)(char), CONST char *fmt, va_list va)
{
int is_long, c, base;
char *vp;
char s[MAX+1];
int converted = 0;
while (c = *fmt++)
{
if (c == '%')
{
if (*fmt == 'l')
{
is_long = 1;
fmt++;
}
else
is_long = 0;
vp = va_arg(va, void *);
switch (*fmt)
{
case 'c':
*(char *)vp = get();
converted++;
break;
case 'o': base = 8; goto read_strtoul;
case 'u': base = 10; goto read_strtoul;
case 'X':
case 'x': base = 16;
read_strtoul:
converted++;
ReadInteger(s, get, unget, base);
if (is_long)
*(unsigned long *)vp = strtoul(s, 0, base);
else
*(unsigned *)vp = strtoul(s, 0, base);
break;
case 'd':
converted++;
ReadInteger(s, get, unget, 10);
if (is_long)
*(long *)vp = strtol(s, 0, 10);
else
*(int *)vp = strtol(s, 0, 10);
break;
case 's':
converted++;
ReadString(vp, get, unget);
break;
default:
puts("unsupported format");
break;
}
fmt++;
}
else if (isspace(c))
{
while ((c = get()) isspace(c))
;
unget(c);
}
else if (get() != c)
break;
}
return converted;
}
Unicode編碼
在計(jì)算機(jī)科學(xué)領(lǐng)域中,Unicode(統(tǒng)一碼、萬國碼、單一碼、標(biāo)準(zhǔn)萬國碼)是業(yè)界的一種標(biāo)準(zhǔn),它可以使電腦得以呈現(xiàn)世界上數(shù)十種文字的系統(tǒng)。Unicode是基于通用字符集(Universal Character Set)的標(biāo)準(zhǔn)來發(fā)展,并且同時(shí)也以書本的形式(The Unicode Standard,目前第五版由Addison-Wesley Professional出版,ISBN-10: 0321480910)對外發(fā)表。Unicode包含了超過十萬個(gè)字符(在2005年,Unicode的第十萬個(gè)字符被采納且認(rèn)可成為標(biāo)準(zhǔn)之一)、一組可用以作為視覺參考的代碼圖表、一套編碼方法與一組標(biāo)準(zhǔn)字符編碼、一套包含了上標(biāo)字、下標(biāo)字等字符特性的列舉等。
Unicode的編碼方式與ISO 10646的通用字符集(Universal Character Set,UCS)概念相對應(yīng),目前實(shí)際應(yīng)用的Unicode版本對應(yīng)于UCS-2,使用16位的編碼空間。也就是每個(gè)字符占用2個(gè)字節(jié)。這樣理論上一共最多可以表示216即65536個(gè)字符。基本滿足各種語言的使用。實(shí)際上目前版本的Unicode尚未填充滿這16位編碼,保留了大量空間作為特殊使用或?qū)頂U(kuò)展。
C++處理Unicode編碼
為了處理Unicode編碼C++為每個(gè)字符處理函數(shù)提供了寬字符(wchar_t)處理函數(shù)。
在ANSI/ISO 9899--1990也就是美國國家為程序設(shè)計(jì)語言C指定的標(biāo)準(zhǔn)(也稱為ANSI C)中是這樣定義的:用多個(gè)字節(jié)來代表的字符稱之為寬字符,而Unicode只是寬字符編碼的一種實(shí)現(xiàn),寬字符并不一定是Unicode。
C語言中輸出unicode編碼可以是用寬字符輸出函數(shù)。
下面是寬字符常用的輸入輸出函數(shù)表:
打印和掃描字符串:
寬字符函數(shù)?????????????????????? 描述
fprintf()/fwprintf()???????????? 使用vararg參量的格式化輸出
fscanf()/fwscanf()???????????? 格式化讀入
printf()????????????????????????????? 使用vararg參量的格式化輸出到標(biāo)準(zhǔn)輸出
scanf()????????????????????????????? 從標(biāo)準(zhǔn)輸入的格式化讀入
sprintf()/swprintf()???????????? 根據(jù)vararg參量表格式化成字符串
sscanf()?????????????????????????? 以字符串作格式化讀入
vfprintf()/vfwprintf()?????????? 使用stdarg參量表格式化輸出到文件
vprintf()???????????????????????????? 使用stdarg參量表格式化輸出到標(biāo)準(zhǔn)輸出
vsprintf()/vswprintf()????????? 格式化stdarg參量表并寫到字符串
輸入和輸出:
寬字符函數(shù)???? 普通C函數(shù)???? 描述
fgetwc()?????????? fgetc()?????????? 從流中讀入一個(gè)字符并轉(zhuǎn)換為寬字符
fgetws()?????????? fgets()?????????? 從流中讀入一個(gè)字符串并轉(zhuǎn)換為寬字符串
fputwc()?????????? fputc()?????????? 把寬字符轉(zhuǎn)換為多字節(jié)字符并且輸出到標(biāo)準(zhǔn)輸出
fputws()?????????? fputs()?????????? 把寬字符串轉(zhuǎn)換為多字節(jié)字符并且輸出到標(biāo)準(zhǔn)輸出串
getwc()??????????? getc()??????????? 從標(biāo)準(zhǔn)輸入中讀取字符, 并且轉(zhuǎn)換為寬字符
getwchar()?????? getchar()?????? 從標(biāo)準(zhǔn)輸入中讀取字符, 并且轉(zhuǎn)換為寬字符
None?????????????? gets()??????????? 使用fgetws()
putwc()??????????? putc()??????????? 把寬字符轉(zhuǎn)換成多字節(jié)字符并且寫到標(biāo)準(zhǔn)輸出
putwchar()??????? putchar()?????? 把寬字符轉(zhuǎn)換成多字節(jié)字符并且寫到標(biāo)準(zhǔn)輸出
None?????????????? puts()???????????? 使用fputws()
ungetwc()???????? ungetc()???????? 把一個(gè)寬字符放回到輸入流中
你要知道system的返回值,并非H1.EXE的返回值。
在DOS下,
system()只是做一個(gè)調(diào)用其他程序的工作,只要調(diào)用成功就返回0,不成功就返回-1。
它不能得到被調(diào)用的程序的執(zhí)行結(jié)果。
要得到其他程序的執(zhí)行的結(jié)果,要用spawn***()這個(gè)家族的函數(shù)。
如果在linux下面
如果你想得到那個(gè)返回值可以調(diào)用WEXITSTATUS(status),其中status是system函數(shù)的返回值。
如果你非常想獲取他的返回值,就使用popen函數(shù)。它返回一個(gè)FILE*,就好像讀寫文件一樣操作它就是了,不需要另外寫文件讀文件。
分享標(biāo)題:c語言unget函數(shù) ungetc
文章URL:http://www.rwnh.cn/article22/ddosijc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站營銷、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、做網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)