以äžã®ããã°ã©ã ãWindows 2000,Windows XPäžã§å®è¡ãããšOSããš
ãã³ã°ã¢ããããããããã¯ãªããŒããããŸãã
Windows 98äžã§ã¯ç¹ã«äžå
·åã¯ãããŸãããVisual C++ 6.0 ãš
Borland C++ Builderã®ã©ã¡ãã§ãã³ã³ãã€ã«ããå Žåã§ãèµ·ãããŸãã
/*
* ãã®ããã°ã©ã ãå®è¡ãããšWin2kããã³ã° or ãªããŒãããã®ã§
* å®è¡ããéã«ã¯åå泚æããŠãã ããã
*/
#include <stdio.h>
int main( void )
{
for(;;){
printf( "hung up\t\t\b\b\b\b\b\b" );
}
return 0;
}
--
-----------------------------
Masaru Tsuchiyama
-----------------------------
> ååãèŠã€ãããã°ã代çã§æçš¿ããŸãã
> #include <stdio.h>
>
> int main( void )
> {
> for(;;){
> printf( "hung up\t\t\b\b\b\b\b\b" );
> }
> return 0;
> }
ããã³ã°ã¢ããããã®ã¯ OS ãæªããšããã°æªãã§ãããããããã°ã©ã ãæªã
ã§ããã
ããŸã㯠printf é¢æ°ã®ãããã¿ã€ãããã£ãããšèŠçŽããŠã¿ãŸãããã
ïŒããªãå€ãééãã§ã¯ãããâŠâŠ
--
written by Takeharu Masuda <t...@kk.iij4u.or.jp>
with Thinkpad 235 - called "Chandra II" / "Clavius"
2001/10/24 00:02:33
printf é¢æ°ã®ãããã¿ã€ã㯠int printf( const char *format [,
argument]... );
ãªã®ã§ç¹ã«ééã£ãŠããããã«ã¯æããªãã§ããã©ããééã£ãŠããŸãã?
ç§ããªããŒãã確èªããŸããã
ããã¯æãã¹ãçŸè±¡ã§ããã
ã©ããæ¢ã«å€æããŠããåé¡ã ãããïŒãåœãã£ãŠããã°å€§äžå€«ãïœãš
åããã°ã©ã ãïŒã§ã³ã³ãã€ã«ãå®è¡ãããŠèŠãŠãã»ïœãããªãã«ãâŠâŠ
衚瀺ãããªããªã£ãŠããããã«ãã¯ã³ãšèœã¡ãŸããã
ã³ã³ãœãŒã«èªäœã®åé¡ã§ã¯ãªããããšæãããŸããããã£ããäœãèµ·ãã£ãŠããããã
ãã®èšäºããæªè³ªãªããããããã°ã©ã ãªã©ã«äœ¿çšãããªãããšãé¡ã£ãŠããŸãã
----- Takeshi SHIGIHARA
Office cyg...@zero.ad.jp
Home cyg...@po.jah.ne.jp -----
> > ããŸã㯠printf é¢æ°ã®ãããã¿ã€ãããã£ãããšèŠçŽããŠã¿ãŸãããã
> > ïŒããªãå€ãééãã§ã¯ãããâŠâŠ
> >
>
> printf é¢æ°ã®ãããã¿ã€ã㯠int printf( const char *format [,
> argument]... );
> ãªã®ã§ç¹ã«ééã£ãŠããããã«ã¯æããªãã§ããã©ããééã£ãŠããŸãã?
ãconst char *format ã¯æžåŒæå®ã®æååã§ããããã®åŸãã«ããããã®ãã©
ã¡ãŒã¿ãããããšãåæã«ãªã£ãŠããŸãã
ïŒANSI C å®çŸ©ã§ã¯å®å
šã«ãªãã·ã§ã³ãªã®ã§0åã§ãæ§ããªãã®ã ããçµæ§ãã©ã
ã«ã®çš®ã«ãªã
ãã€ãŸããä»åã®ã±ãŒã¹ãªã
ãprintf( "%s", æåå );
ã£ãŠæžãã»ããããå®å
šã§ããputs ãšåãæèŠã§ printf( æåå ) ã£ãŠæžã
人ã¯å€ãã§ãããããã ãšå
éšã§ã©ããããã©ãã«ãèµ·ãããåãã£ããã®ã§ã¯
ãããŸããã
ïŒç¹ã«æååã« "%" ãå«ãããã£ãæ¥ã«ã¯âŠâŠ
ããŸããva_start ãš va_end ãã¯ãã®æ±ããªããã§ãšãã¶ã£ãŠãããã ãšã¯æ
ããŸãããããšããš printf( æåå ) ã£ãŠæžãã®ã¯ããŸãæå¿ããªãã§ããã
--
written by Takeharu Masuda <t...@kk.iij4u.or.jp>
with Thinkpad 235 - called "Chandra II" / "Clavius"
2001/10/24 23:57:26
Masaru Tsuchiyamaæ°ã®èšè¿°ã¯ãèšèªã®ã©ã€ãã©ãªã®äœ¿ãæ¹ãšããŠå®å šã«æ£ããã®ã§ãã
ãšããã§ãTakeharu Masudaããã¯ããã®ã³ãŒããè©ŠããŠã¿ãŸãããïŒ
ç§ã¯printfãWin32ã® WriteFile ãŸã㯠WriteConsole ã«æžãæããŠãŸã§è©ŠããŸããã
çµæã¯ãæŽèµ°ã»ãªã»ããã§ãã
ããã¯ïŒ£èšèªã©ã€ãã©ãªã®äœ¿ãæ¹ã®åé¡ã§ã¯ãªããWin2K/XPäžã®ã³ã³ãœãŒã«èªäœã®åé¡
ã§ããã»ãã¥ãªãã£ããŒã«ãšèšã£ãŠãè¯ãã
éåžžã«ç±ã
ããåé¡ãªãã§ãã
---- Takeshi SHIGIHARA
OFFICE cyg...@zero.ad.jp
HOME cyg...@po.jah.ne.jp , cyg...@tka.att.ne.jp ------------
fj.comp.lang.cãå ããŠããã©ããŒå ãfj.comp.lang.cã§ãã
Takeharu Masuda wrote:
> On Wed, 24 Oct 2001 07:37:11 +0900
> "Masaru Tsuchiyama" <tsuch...@asahi-net.email.ne.jp> wrote
> at Re: Windows 2000ããã³ã°ã¢ãããããã°ã«ã€ããŠ
> (<3bd5f119$0$21719$44c9...@news2.asahi-net.or.jp>):
>
> > > ããŸã㯠printf é¢æ°ã®ãããã¿ã€ãããã£ãããšèŠçŽããŠã¿ãŸãããã
> > > ïŒããªãå€ãééãã§ã¯ãããâŠâŠ
> > >
> >
> > printf é¢æ°ã®ãããã¿ã€ã㯠int printf( const char *format [,
> > argument]... );
> > ãªã®ã§ç¹ã«ééã£ãŠããããã«ã¯æããªãã§ããã©ããééã£ãŠããŸãã?
>
> ãconst char *format ã¯æžåŒæå®ã®æååã§ããããã®åŸãã«ããããã®ãã©
> ã¡ãŒã¿ãããããšãåæã«ãªã£ãŠããŸãã
>
> ïŒANSI C å®çŸ©ã§ã¯å®å
šã«ãªãã·ã§ã³ãªã®ã§0åã§ãæ§ããªãã®ã ããçµæ§ãã©ã
> ã«ã®çš®ã«ãªã
>
ãªãã°ããã©ã¡ãŒã¿ããªããšãåé¡ãªãã§ããããã©ããªãã©ãã«ã®çš®ã«ãªããã§ããããïŒ
>
> ãã€ãŸããä»åã®ã±ãŒã¹ãªã
>
> ãprintf( "%s", æåå );
>
> ã£ãŠæžãã»ããããå®å
šã§ããputs ãšåãæèŠã§ printf( æåå ) ã£ãŠæžã
> 人ã¯å€ãã§ãããããã ãšå
éšã§ã©ããããã©ãã«ãèµ·ãããåãã£ããã®ã§ã¯
> ãããŸããã
> ïŒç¹ã«æååã« "%" ãå«ãããã£ãæ¥ã«ã¯âŠâŠ
ä»åã¯"%"ãå«ãã§ããªããã ãããåé¡ã¯ãããŸããã
確ãã«ãæååãå¯å€ã§ããå Žåããä»»æã®æååã«å€æŽããã
å¯èœæ§ã®ããå Žåã¯ããšã³ãã°ããããæžãæ¹ãããããŸãããã
ä»åã®ã³ãŒããã®ãã®ã«ã¯ãŸã£ããåé¡ã¯ãªãã§ãããã
>
>
> ããŸããva_start ãš va_end ãã¯ãã®æ±ããªããã§ãšãã¶ã£ãŠãããã ãšã¯æ
> ããŸãããããšããš printf( æåå ) ã£ãŠæžãã®ã¯ããŸãæå¿ããªãã§ããã
>
va_start,va_argãã¯ãã¯é¢ä¿ãªããšæããŸããïŒ
--
cog...@sp.hudson.co.jp
æ ªåŒäŒç€Ÿãããœã³
ç 究éçºæ¬éšãç 究éçºèª²
ç岡 å¿(Kumaoka Shinobu)
In article <3BD6E610...@tka.att.ne.jp>,
Takeshi SHIGIHARA <cyg...@po.jah.ne.jp> wrote:
>printf("constant string");
>ããã¯ãå®å
šã«legalãªèšè¿°ã§ãããããã«å€ææååãå«ãŸãããã©ããã¯ãªãã·ã§ã³ã§
>ãã£ãŠãããå®å
šãã©ããã¯æå³ããªããŸããã
>
>Masaru Tsuchiyamaæ°ã®èšè¿°ã¯ãèšèªã®ã©ã€ãã©ãªã®äœ¿ãæ¹ãšããŠå®å
šã«æ£ããã®ã§ãã
ãC ãåŠç¿ããæã«çã£å
ã«åºãŠæ¥ã sample program ã®äžã€ã§ã
ãã hello.c ãå®ã¯èŠæ Œéåã§ãã£ããšããã®ã¯å®ã«æ¬æ°ãªåå£
ã§é¢çœãã®ã§ãããããã蚌æãã¹ãææ¢ã«ã OS ãèœããŠã¿ãã
Windows 2000 ãšããã®ããªããªãã®ãã®ã§ãã :-)
ããããããã®æèšãç¬æ¢æ±ãããŠçµããã§ã¯å¿äœãªãã®ã§ãåå
ã®åãåãã«çšãããšããã®ã¯äžã€ã®çã§ãããšæããŸãã
ãããã§ãlegalããšèšãããŠãã printf("%s", "hungup...") ãª
ãæ¬åœã«èœã¡ãªãã®ããã¯ããŸã puts("hungup...") ãªã倧äžå€«
ãªã®ããfprintf() ãªãã©ãããfprintf() ã®åºåå
ã stdout 以
å€ã«æ®ãããã©ããªã®ããè²ã
è©ŠããŠã¿ã䟡å€ã¯ãããšæããŸãã
ããŸããconsole program ãšããŠäœ¿ãå Žåãshell 㧠stdout ãæ
ãã® file ã« redirect ããŠã¿ããšã©ããªãã®ããANSI.SYS ãèš
å®ããŠã¿ããšã©ãããDOS ã¢ããªãšã㊠compile ãããã®ãªãã©
ããªã®ããçã
ç°å¢ãå€ããŠè©ŠããŠã¿ãŠãããã§ãããã
ããã®ããã«èå³ã¯å°œããªãã®ã§ãããæ®å¿µãªããšã«ç§ã®åšå²ã«ã¯
ãèœããŠãæ§ããªã Windows 2000 ç°å¢ããååšããªãã®ã§ãç¡é
ã«è©Šãèš³ã«ããããªããŠãžã¬ã³ããæ±ããŠããŸãã
>ç§ã¯printfãWin32ã® WriteFile ãŸã㯠WriteConsole ã«æžãæããŠãŸã§è©ŠããŸããã
>çµæã¯ãæŽèµ°ã»ãªã»ããã§ãã
ãlibrary ã®æ¯éã§ã¯ãªããŠç«¯æ«ã®å®è£
ãã¹ã®ãããªæ°ãããŠããŸ
ããããšãªããšãC ã§æžããªããŠã perl ã§ã BASIC ã§ã䌌ãã
ããªçç¶ãèµ·ããããã«æããŸãã
ãäžèšã®è©Šè¡äŸã®äžã§ã¯ ANSI.SYS ãªã©æ¯éãšãè©ŠããŠã¿ããéšé¡
ã®æ€èšŒã ãšæãã®ã§ããåŠäœãªãã®ã§ãããïŒWindows NT/2000 ã§
㯠%SystemRoot%\SYSTEM32\CONFIG.NT ããããããããXP ã§ãäž
ç·ã§ããã£ãïŒ
>ããã¯ïŒ£èšèªã©ã€ãã©ãªã®äœ¿ãæ¹ã®åé¡ã§ã¯ãªããWin2K/XPäžã®ã³ã³ãœãŒã«èªäœã®åé¡
>ã§ããã»ãã¥ãªãã£ããŒã«ãšèšã£ãŠãè¯ãã
>éåžžã«ç±ã
ããåé¡ãªãã§ãã
ãå²ãšè¯ã䜿ã console ã¢ããªãšããŠã¯ FTP.EXE ãªããã©ããªã
ã ãããšæããŸãããæ¥ç¶æã® message ã«ä»¶ã®æååãè¿ã site
ãçšæããŠãããšãçµæ§ãªã¹ããŒãªçµæãåŸããããããããããª
ãã§ããããïŒ
ãé 匵ãã°ããDIRããšæã£ãã ãã§èœã¡ãç°å¢ãæ§ç¯åºæ¥ããã
ç¥ããŸãããã
--
ããã ããã
perl ã§ããã³ã°ã¢ããããŸããã
for (;;) {
print "hung up\t\t\b\b\b\b\b\b";
}
Takashi SHIRAI wrote:
>
> ãlibrary ã®æ¯éã§ã¯ãªããŠç«¯æ«ã®å®è£
ãã¹ã®ãããªæ°ãããŠããŸ
> ããããšãªããšãC ã§æžããªããŠã perl ã§ã BASIC ã§ã䌌ãã
> ããªçç¶ãèµ·ããããã«æããŸãã
--
å·ç«¯ 浩 (Hiroshi Kawabata)
mailto:falc...@muf.biglobe.ne.jp
> ããããããã®æèšãç¬æ¢æ±ãããŠçµããã§ã¯å¿äœãªãã®ã§ãåå
> ã®åãåãã«çšãããšããã®ã¯äžã€ã®çã§ãããšæããŸãã
ãããããããããã¯smartã âŠâŠç§ãèŠç¿ããã°ã
ãã®çŸè±¡ã®ãããã倧åé¡ã«ãç§ã¯ç±ããªããããŠããããã«æããŸãã
> ãlibrary ã®æ¯éã§ã¯ãªããŠç«¯æ«ã®å®è£
ãã¹ã®ãããªæ°ãããŠããŸ
> ããããšãªããšãC ã§æžããªããŠã perl ã§ã BASIC ã§ã䌌ãã
> ããªçç¶ãèµ·ããããã«æããŸãã
Masaru Tsuchiyamaãã㯠comp.os.ms-windows.programmer.win32 ã«ãåæ§ã®èšäºã
åºããŠããã£ããããŸãã
Message ID 3bd56bdb$0$21707$44c9...@news2.asahi-net.or.jp ããå§ãŸãã
äžé£ã®ã¹ã¬ãããåºæ¥äžãã£ãŠããŸãããã¡ãããŸããèå³æ·±ããã®ã§ãã
ãã®ã¹ã¬ããã«ãŠãçŸè±¡ãåçŸã§ããæãçããã®ãšããŠãBart Kowalskiæ°ã
int main(void)
{
printf("\t\b\b");
return 0;
}
ãšããã®ãçºè¡šãããŠããŸãããŸãããããasciiã ãããunicodeã ãããé¢ä¿ãªã
çŸè±¡ãèµ·ãããšããå ±åããããŸãã
ãã¡ã€ã«ã«ãªãã€ã¬ã¯ããããã®ãtypeãããã®ã§ãããã¯ãçŸè±¡ã¯èµ·ãã£ãããã§ãã
ç§ã¯ãã§ããéãã·ã¹ãã ã«è¿ãæ¡ä»¶ãšããŠãprintfãæçµçã«äœ¿çšããŠããAPIã§ã
ããWriteFile APIã«ãŠçŸè±¡ã確èªããŸããã
ãšããã§ãWriteFileãè¡ãåã«ã³ã³ãœãŒã«ã®ã¢ãŒãã
SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), 0);
ã«ãŠã¿ãããç·šéãããªãã¢ãŒãã«ããŠåäœããããšããããªã»ãããªã©ã®æŽèµ°è¡çº
ãèµ·ãããªãããšã確èªããŠããŸãâŠâŠããŸã䜿ãç©ã«ãªããªãæ°ãããŸãã
> ãäžèšã®è©Šè¡äŸã®äžã§ã¯ ANSI.SYS ãªã©æ¯éãšãè©ŠããŠã¿ããéšé¡
> ã®æ€èšŒã ãšæãã®ã§ããåŠäœãªãã®ã§ãããïŒWindows NT/2000 ã§
> 㯠%SystemRoot%\SYSTEM32\CONFIG.NT ããããããããXP ã§ãäž
> ç·ã§ããã£ãïŒ
ãããã¯è©ŠããŠããŸããã§ããããä»ãXPç°å¢ã¯ç¡ãã®ã§Win2000ã ãã§ããã
ããïœã®âŠâŠ
ãã¬ã¯ã
ãã
ãä»ãæ°ã¥ãããã©ãã³ã³ãœãŒã«ã§ prompt $e[32m ãšãããŠãè²ãå€ãããªãã
äœãééããŠãããªã
NT kernelã®åé¡ãããã®ã§ããŸãæ
å ±éããªãã§ããã
VMWare 2.0.4äžã®W2Kã§ãåæ§ã®çŸè±¡ãåçŸããŸããã
ãã¹ããããªããã®æã®ç°å¢ã䟿å©ã§ããã
# ãã®ãã°ã«ã¯åããŠç¬ããããããŸãããâŠ
----
Muraoka Taro <ko...@tka.att.ne.jp>
> 以äžã®ããã°ã©ã ãWindows 2000,Windows XPäžã§å®è¡ãããšOSããš
> ãã³ã°ã¢ããããããããã¯ãªããŒããããŸãã
Win32 ã³ã³ãœãŒã«ã§ ãšã¹ã±ãŒã sequence ã¯äœ¿ããªã
ãšæããŸããcommand.com + ansi.sys ã§ã¯ OK ããã
Masaru Tsuchiyama wrote:
>
> ååãèŠã€ãããã°ã代çã§æçš¿ããŸãã
>
> 以äžã®ããã°ã©ã ãWindows 2000,Windows XPäžã§å®è¡ãããšOSããš
> ãã³ã°ã¢ããããããããã¯ãªããŒããããŸãã
> Windows 98äžã§ã¯ç¹ã«äžå
·åã¯ãããŸãããVisual C++ 6.0 ãš
> Borland C++ Builderã®ã©ã¡ãã§ãã³ã³ãã€ã«ããå Žåã§ãèµ·ãããŸãã
>
ãã®å
容ãã»ãã¥ãªãã£ããŒã« memo ã¡ãŒãªã³ã°ãªã¹ããžæçš¿ããŸããã
http://memo.st.ryukoku.ac.jp/archive/200110.month/thread.html
ã®ãã³ã³ãœãŒã«ããã°ã©ã 㧠Windows 2000 ããã³ã°ã¢ããããã
以äžã®ã¹ã¬ãããèŠãŠäžãããã
--
å°æ³ é
æ(Koyanagi...@nifty.ne.jp)
ã人ã®è¶³ãæ¢ããã®ã¯"絶æ"ã§ã¯ãªã"諊芳"
人ã®è¶³ãé²ããã®ã¯"åžæ"ã§ã¯ãªã"æå¿"ã
ãããããããããããããããããã-- ARMS
> ãã®å
容ãã»ãã¥ãªãã£ããŒã« memo ã¡ãŒãªã³ã°ãªã¹ããžæçš¿ããŸããã
> http://memo.st.ryukoku.ac.jp/archive/200110.month/thread.html
> ã®ãã³ã³ãœãŒã«ããã°ã©ã 㧠Windows 2000 ããã³ã°ã¢ããããã
> 以äžã®ã¹ã¬ãããèŠãŠäžãããã
NTBugtrag ã«ãæµããŸããã
ïŒå
èšäºã®ç¡éã«ãŒããå«ãã³ãŒãããã®ãŸãŸæžããããmoderator ã«
ïŒããããç¡éã«ãŒãã§ãã·ã³ãã¯ãŒã奪ãããŠãã ãã ããããã»ã¹ã
ïŒæ®ºãã°çãè¿ãã¯ãã ããšããåéãããã㊠reject ãããŸããã
ïŒçŸåšãKowalski æ°ã®ã³ãŒããæžãæ·»ããŠåæçš¿äžã
========================================================================
é£¯å¶ æµ©å
/ ã§ãããã http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp
mailto:delm...@pop01.odn.ne.jp
é¢çœãã³ããããããŸããã以äžã®ã³ãŒãèŠãŠäžããã
ïŒãã³ã°ããŸããããããå®å¿ãïŒ
int main(int argc, char* argv[])
{
printf("12345678901234567890\t\b\b");
return 0;
}
æ¬æ¥ãªãã
1234567890123456789
ãšè¡šç€ºãããã¯ãã§ãããããšãããã
1234567890123456
ãŸã§ããåºåãããŸããã
ããã¯æšæž¬ã§ããã
Win2kã§ã¯ã\bããçŽåã®\bã§ãªãæåã®ãã€ãæ°åãããã¯ããããã§ãã
äžèšã®å Žåã\tã¯ãã³ã³ãœãŒã«äžã§ïŒæååã§ãã®ã§ã
\b\bã§"7890"+ã¿ããåé€ãããããã§ãã
printf("12345挢\b\b");
ã§ã¯ã"挢"ãïŒãã€ãã§ãããã\b\bã§"45挢"ãåé€ãããŸã
ã€ãŸããïŒãã€ãããã¯ããããã§ãã
çµæãšããŠã\t\b\bã«ãã£ãŠããããã¡ãïŒãã€ãååŸãã«æ»ãã
ã¢ã¯ã»ã¹éåãçºçããŠWin2kãèœã¡ããã®ãšæãããŸãã
ã¡ãªã¿ã«ãWin9xã§èœã¡ãªãã®ã¯ã2kãDOSããšãã¥ã¬ãŒã·ã§ã³ããŠããã®ã«å¯ŸããŠã
9xãä»®æ³ã¢ãŒãã§åäœããŠããããšã«ãããšæããŸãã
--
Aritel <ari...@geocities.co.jp>
http://cgi.cx/aritel/
In article <3BD833E9...@tka.att.ne.jp>,
Takeshi SHIGIHARA <cyg...@po.jah.ne.jp> wrote:
>ãã®ã¹ã¬ããã«ãŠãçŸè±¡ãåçŸã§ããæãçããã®ãšããŠãBart Kowalskiæ°ã
> int main(void)
> {
> printf("\t\b\b");
> return 0;
> }
>ãšããã®ãçºè¡šãããŠããŸãããŸãããããasciiã ãããunicodeã ãããé¢ä¿ãªã
>çŸè±¡ãèµ·ãããšããå ±åããããŸãã
ãUNICODE ã€ã£ãŠãè²ã
ãã£ãŠãUTF-8 ã ãšãã®æååã®ã³ãŒãã¯
ASCII ãšå
šãåãã§ãããUCS-2 ã ãšåã« BYTE -> WORD ã«ããã
ã®ã«ãªããŸããã
ãå€åèšãããšããŠãã®ã¯ã"\0\t\0\b\0\b" ãšãã UCS-2 ã®ã³ãŒ
ããåãããæããããã㯠UNICODE æååãåŒæ°ã«åããããª
API ã§ç«¯æ«åºåãããæãšããæå³ã ãšæããŸãã
ãåè
ã ãšãããšãUCS-2 ã® 1 byte ç®ã§ãã \0 㯠C ã® ASCIZ
ã® terminator ãªã®ã§ãfputc() 蟺ãã§äžæåãã€åããªããšåºå
åºæ¥ãŸããããããã§è©Šè¡ããã®ãªãåã«ç«¯æ«ã \0 ãç¡èŠããã
ãã§åãå¹èœãåŸãããçµæãªãã§ãããã
ãåŸè
ã ãšãããšãprintf() ã®ãã㪠ASCII ãæ±ã library ãã
UNICODE æååãæ±ã API ããçµå±ã¯å
éšçã«ã¯åããšããã«èŸ¿
ãçãçãªã®ã§ãåçŸããŠåœããåã®ãããªæ°ãããŸãã
ãã©ã®é console ãå®çŸããéšåã® MS library ã® bug ã£ãœãã§
ããã
>ãã¡ã€ã«ã«ãªãã€ã¬ã¯ããããã®ãtypeãããã®ã§ãããã¯ãçŸè±¡ã¯èµ·ãã£ãããã§ãã
ãå°å³¶ïŒ éŸè°·å€§ãããšãã® memo ãèŠããšä»ã«ãåçŸå ±åãæãã£
ãŠããã§ããããã®èŸºããèžãŸããŠç·åçã«å€æãããšãå¿çšç¯å²
ã¯æãã®ã»ãåºããã§ããã
ãcommand prompt ãå«ã㊠console ã¢ããªã¯äœ¿çšçŠæ¢ã«ãããšã
ããéåžžã«äžäŸ¿ãªåé¿æ³ããä»ã®ãšããé²åŸ¡çã¯ãªãããç¥ããŸã
ãã
ïŒã代æ¿åãšããŠãcygwin ã®ç«¯æ«ã§åã COMMAND.COM ãªããŠãã®
ïŒã¯ç¡ãã®ããããïŒ
>ç§ã¯ãã§ããéãã·ã¹ãã ã«è¿ãæ¡ä»¶ãšããŠãprintfãæçµçã«äœ¿çšããŠããAPIã§ã
>ããWriteFile APIã«ãŠçŸè±¡ã確èªããŸããã
>ãšããã§ãWriteFileãè¡ãåã«ã³ã³ãœãŒã«ã®ã¢ãŒãã
> SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), 0);
>ã«ãŠã¿ãããç·šéãããªãã¢ãŒãã«ããŠåäœããããšããããªã»ãããªã©ã®æŽèµ°è¡çº
>ãèµ·ãããªãããšã確èªããŠããŸãâŠâŠããŸã䜿ãç©ã«ãªããªãæ°ãããŸãã
ãããã£ãŠãã® console ã¢ããªãçµã£ãŠããŸããšåœç¶ç¡å¹ã«ãªã£
ãŠããŸã£ãŠãOS èµ·ååŸäžåºŠå®è¡ããŠããã°ãã®åŸã¯ãã£ãšå€§äžå€«
ãªããŠããšã¯ãããŸããããïŒ
ãäœãããããæ段ãçšæåºæ¥ãã°ãèªè¡çãšã㊠startup ã«å«
ããŠãããã®ã§ããã
ããã® SetConsoleMode() ã§åé¿åºæ¥ãã®ã«ããã£ãŠãtab åŠçã
ç¡å¹ã«ãããããšãå¹ããŠããã®ã§ã¯ãªããŠã"\t\b\b" ãåºåã
ãåã«ç«¯æ«ã®åæåãæ£ããè¡ãªãããã®ã§åé¿åºæ¥ããšããããš
ã¯ãããŸããããïŒ
ãå€åã"\t\b\b" ããã® console ã¢ããªã®äžã§æåã«åºåããã
æååã ãããããªããšæããã§ãããããã§ãªããã°ããããªå
çŽãªæååã©ãã§ã§ãçŸãåŸãã®ã§ãã£ãšæ©æã«çºèŠããŠããçã§
ãã
ããã® API ã£ãŠäœãå¯äœçšç¡ãã£ãŠä¿èšŒã¯ãããŸããããïŒåŒæ°
ã 0 -> 1 ã«è¿ããšã¡ãããšåçŸãããããªãããã®ã¢ãŒãã®éã
ãåå ã ãšç¹å®åºæ¥ãããç¥ããŸãããã
>> ãäžèšã®è©Šè¡äŸã®äžã§ã¯ ANSI.SYS ãªã©æ¯éãšãè©ŠããŠã¿ããéšé¡
>> ã®æ€èšŒã ãšæãã®ã§ããåŠäœãªãã®ã§ãããïŒWindows NT/2000 ã§
>> 㯠%SystemRoot%\SYSTEM32\CONFIG.NT ããããããããXP ã§ãäž
>> ç·ã§ããã£ãïŒ
>
>ãããã¯è©ŠããŠããŸããã§ããããä»ãXPç°å¢ã¯ç¡ãã®ã§Win2000ã ãã§ããã
>ããïœã®âŠâŠ
>ãã¬ã¯ã
ãCOMMAND.COM + ANSI.SYS ã ãšç«¯æ«åºåã«é¢ããåæåããã£ãš
äžå¯§ã«å®è¡ãããããªãšæã£ããã§ããé§ç®ã§ãããã
ããµã
ã
ïŒãé§ç®å
㧠printf("%s", "\t\b\b") ãšããŠã¿ããšåçŸããªããª
ïŒã£ãããªããããŠããŸããšé¢çœããã ãã©ãªãŒ :-)
--
ããã ããã
In article <9rej2j$4dc$1...@news0.hi-ho.ne.jp>,
aritel <ari...@geocities.co.jp> wrote:
>åæçš¿ aritel ã§ã
>ããã¯æšæž¬ã§ããã
>Win2kã§ã¯ã\bããçŽåã®\bã§ãªãæåã®ãã€ãæ°åãããã¯ããããã§ãã
>äžèšã®å Žåã\tã¯ãã³ã³ãœãŒã«äžã§ïŒæååã§ãã®ã§ã
>\b\bã§"7890"+ã¿ããåé€ãããããã§ãã
>
> printf("12345挢\b\b");
>ã§ã¯ã"挢"ãïŒãã€ãã§ãããã\b\bã§"45挢"ãåé€ãããŸã
>ã€ãŸããïŒãã€ãããã¯ããããã§ãã
>
>
>çµæãšããŠã\t\b\bã«ãã£ãŠããããã¡ãïŒãã€ãååŸãã«æ»ãã
>ã¢ã¯ã»ã¹éåãçºçããŠWin2kãèœã¡ããã®ãšæãããŸãã
ããããããªãã"挢\b\b" ã§ãèœã¡ãããªæ°ãããŸãããåã«äœ
å°ã« backword ããã ãã§èœã¡ããšèšããªã "\b\b\b\b\b..." ãš
ããæååã§ãèœã¡ããã§ãã
ã"\t\b\b" ã®å Žåäœå°ã«æ»ãã®ã¯ 4 æååã§ãããããããã®æ°
ãéèŠãªã®ãªããã挢ããªã "挢\b\b\b" 㧠4 æååäœå°ã«æ»ã
ãŸããã"\b\b\b\b" ã§ã 4 æååæ»ããŸããã
ããããããŠãcommand prompt èµ·åããŠçŽåŸã« Bs ããŒã 4 åå©
ããã ãã§èœã¡ããã㊠:-)
>ã¡ãªã¿ã«ãWin9xã§èœã¡ãªãã®ã¯ã2kãDOSããšãã¥ã¬ãŒã·ã§ã³ããŠããã®ã«å¯ŸããŠã
>9xãä»®æ³ã¢ãŒãã§åäœããŠããããšã«ãããšæããŸãã
ã95/98 ã§åããŠãã®ã¯ããã MS-DOS ãã®ãã®ã§ããDOS prompt
ã£ãŠã®ã¯ãDPMI ãå®è£
ãã MS-DOS ver. 7 ãšããŠåããŠãŸãã
ãã ããé
ããã§ããã16bit ã¢ããªãš 32bit ã¢ããªã DPMI ã§
è¡ãæ¥ããèš³ã§ããããã§ããDOS prompt ã§ã¯ãã®æ¬ç©ã® MS-DOS
ã®ãèã§ãemulator ã® command prompt ã§ã¯åããªãã¢ããªã§ã
ãŸãæ®éã«åããŠãããŸãã
ã95/98 ã§ã¯ function call éšåã®å®è£
㯠MS-DOS ãšåããªã®ã§
ãããNT/2000 ã®å Žåã¯ãã® function call éšåã®å®è£
ããããŠ
MS-DOS æ代㮠emulation ã«ãªã£ãŠãŸãã
ãä»åã®ä»¶ã§ emulation ããŸããã£ããšããã®ã¯ãå€åãã®éšå
ãªããããªãããšæããŸããã©ãã
--
ããã ããã
ããã«ã€ããŠã¯ã以äžã§ç¢ºèªã§ããŸãã
main(){
printf("\n\n");
printf("\b\b\b\b");
}
main(){
printf("\n\n");
printf("挢\b\b\b\b");
}
main(){
printf("\n\n");
printf("\t\b\b\b\b");
}
ãããããæ¹è¡ããåŸã«åé¡ã®ã³ãŒããå
¥ããŠãããŸããåãããŠèŠããšããããŸã
ãã\bã ãã挢\b... ã¯åã®è¡ã«ã¯æ»ããŸããããªããªãã\bã¯è¡é ããåã«ã¯æ»ã
ãªãä»çµã¿ïŒãšããã®ãæšæºã®ã¯ãïŒã ããã§ããïŒãã€ããã€æ»ããããè¡é ãã
åã«æ»ãã¯åãæšãŠãããŸãã
ãããã\t\b... ã®å Žåã ããã«ãŒãœã«ãåã®è¡ã«ç§»åããŸãããªããã\tã®ãšãã
ãè¡é ããåãžã®ïŒ¢ïŒ³ãç Žæ£ãããã«å®è¡ãããŠããŸããã§ããã
ãšãæã£ããã§ãããå€éšãšéä¿¡ãããããªã³ã³ãœãŒã«ã¢ããªã§ã
å€éšããã®å
¥åããã®ãŸãŸã³ã³ãœãŒã«ã«åãæµããããªãã®ã ãšã
ãããéããŠæ»æãããå¯èœæ§ããããŸããã
# ãã®ãã°ã䜿ã£ãæ»æã§ãªããŠãã\aã倧éã«éããããâŠïŒ(^^;;
> ããã® SetConsoleMode() ã§åé¿åºæ¥ãã®ã«ããã£ãŠãtab åŠçã
> ç¡å¹ã«ãããããšãå¹ããŠããã®ã§ã¯ãªããŠã"\t\b\b" ãåºåã
> ãåã«ç«¯æ«ã®åæåãæ£ããè¡ãªãããã®ã§åé¿åºæ¥ããšããããš
> ã¯ãããŸããããïŒ
> ãå€åã"\t\b\b" ããã® console ã¢ããªã®äžã§æåã«åºåããã
> æååã ãããããªããšæããã§ããã
ã©ãã§ããããã³ã³ãœãŒã«ã¢ããªãå®è¡ãããã³ã«æ°ããã³ã³ãœãŒã«ã
äœæãããããã§ã¯ãããŸãããããã³ã³ãœãŒã«ã¢ããªãæåã«åºåãã
æååã"\t\b\b"ãã©ããã¯é¢ä¿ãªããšæããŸãã
> ããã§ãªããã°ããããªå
> çŽãªæååã©ãã§ã§ãçŸãåŸãã®ã§ãã£ãšæ©æã«çºèŠããŠããçã§
> ãã
ãããããããã£ãã«çŸããªãã®ã§ã¯ãã¿ããåºåããåŸã«
ããã¯ã¹ããŒã¹ãåºåãããã£ãŠã©ããªç¶æ³ã§ãããã
å
èšäºã®æ¹ã®ååã®æ¹ã«ãã©ãããç¶æ³ã§çºèŠããã®ãèšããŠã¿ããã§ããã
> ããã® API ã£ãŠäœãå¯äœçšç¡ãã£ãŠä¿èšŒã¯ãããŸããããïŒåŒæ°
> ã 0 -> 1 ã«è¿ããšã¡ãããšåçŸãããããªãããã®ã¢ãŒãã®éã
> ãåå ã ãšç¹å®åºæ¥ãããç¥ããŸãããã
>
ããã§ãããããã«ã
http://msdn.microsoft.com/library/en-us/dllproc/conchar_25b9.asp
ã«ã
> When a console is created, all input modes except
> ENABLE_WINDOW_INPUT are enabled by default.
ãšæžããŠããããã«ãã³ã³ãœãŒã«ã®ã¢ãŒãã®åæå€ã¯ã
ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_PROCESSED_INPUT |
ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_OUTPUT |
ENABLE_WRAP_AT_EOL_OUTPUT
ã§ãããã"PROCESSED_INPUT"ã解é€ããããšã«ãã
å¹æã ãšããä¿èšŒããããŸãããã
# ããã ãšããäºæ³ã¯ã§ããããæãããããªãã ãããã©
# ããããããWRAP_AT_EOL_OUTPUTã ã£ããããŠ