H8¤Çfopen()/fgets()/fputs()




H8¤Çfopen()/fgets()/fputs()/fread()/fwrite()¤½¤Î¾FILE·Ï´Ø¿ô¤ò

2003/JUL/27

¥È¥éµ»/½©·î/HEW/HEW2¤¢¤¿¤ê¤ÎC¥³¥ó¥Ñ¥¤¥é¤ËFILE·Ï´Ø¿ô¤òƳÆþ¤·¤Æ¤ß¤Þ¤¹¡£ ¤È¸À¤Ã¤Æ¤â¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºÜ¤»¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¯¡¢¥Ç¥Ð¥¤¥¹ÂоݤȻפäƤ¯¤À¤µ¤¤¡£ ¤Þ¤¿¥â¥Ë¥¿ÇÛ²¼¤Ê¤É¥·¥ó¥°¥ë¥¿¥¹¥¯´Ä¶­¤Ç¤Ïfgets()¤Ê¤ÉÆþÎϷϤϤá¤Á¤ã¤¯¤Á¤ã °·¤¤¤Ë¤¯¤¤¤Ç¤¹¡£
UNIXɸ½à´Ø¿ô¤ÈH8¾å¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤¢¤ëÄøÅÙ¤´Â¸ÃΤÎÊý¤òÂоݤ˽ñ¤¤¤Æ¤Þ¤¹¡£
̵ÊݾڤǤ¹¡£³Æ¼«¤ÎÀÕǤ¤Ë¤ª¤¤¤Æ¤ª´ê¤¤¤·¤Þ¤¹¡£

»²¹Í»ñÎÁ

¤È¤ê¤¢¤¨¤º
¥¿¡¼¥²¥Ã¥È¥×¥í¥°¥é¥à¤Ëfopen("dev","r");fgetc(fp); ¤ß¤¿¤¤¤Î¤ò½ñ¤­Â­¤·¤Æ¡¢ ¥È¥éµ»C¤Ê¤ê½©·îC¤Ê¤ê¤ÇÉáÄ̤˥³¥ó¥Ñ¥¤¥ë¡¢¥ê¥ó¥¯¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£ ¤¤¤¯¤Ä¤«´Ø¿ô¤¬¸«¤Ä¤«¤é¤Ê¤¤¡¢¤È¸À¤ï¤ì¤ë¤Ï¤º¤Ç¤¹¡£ ¤½¤¦¤¤¤¦´Ø¿ô¤ò¼ê½ñ¤­¤·¤ÆÄɲåê¥ó¥¯¤¹¤ë¤³¤È¤ÇFILE·Ï´Ø¿ô¤¬ÍøÍѤǤ­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¤Ç¤ª¤¤¤é¤Ï²¿½ñ¤­¤ã¤¤¤¤¤Î¤µ¡©
¥Ç¥Ð¥Ã¥°»þ¤Ë¤Ïopen()¤ÎÃæ¤Çprintf("open() ¤¬¸Æ¤Ð¤ì¤Þ¤·¤¿¡£°ú¿ô¤Ï%s %d %d¤Ç¤¹\n",,); ¤È¤«¤ä¤ê¤¿¤¯¤Ê¤ê¤Þ¤¹¤¬¡¢¥Þ¥Ë¥å¥¢¥ë(10.3.3Àá)¤Ë¤ÏFILE·Ï´Ø¿ô¤ÏÁ´Á³¥ê¥¨¥ó¥È¥é¥ó¥È¤¸¤ã¤Ê¤¤¤¾ ¤È¤¢¤ê¤Þ¤¹¡£fp¤«fd¤¬°Û¤Ê¤ì¤ÐÊ¿µ¤¤Êµ¤¤¬¤·¤Þ¤¹¤¬¡¢ÆÈ¼«¤Î½ÐÎϥ롼¥Á¥ó¤òÍѰդ·¤¿¤Û¤¦¤¬ ̵Æñ¤Ç¤¹¡£Åö¥µ¥¤¥ÈÆâ¤Ë¤¢¤ëOUT_STRING()¤Ê¤ó¤«¤¤¤«¤¬¡©

źÉÕlower.c¤Ë¤Ä¤¤¤Æ
¥â¥Ë¥¿¥½¡¼¥¹¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ä¤¤¤ÆÍè¤ëlower.c¤Ç¤¹¤¬¡¢¾¯¡¹¤¤¤¸¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
RAM¤â¤Ê¤ó¤«É¬Íפʤó¡©

¤¸¤ã¤¤¤è¤¤¤èfopen()
fopen(char *fileName,char *mode)¤Ç¤¹¤¬¡¢fileName¤Ï¤½¤Î¤Þ¤Þopen()¤ËÅϤµ¤ì¤ë¤À¤±¤Ç¤¹¤«¤é¡¢¹¥¤­¾¡¼ê¤Ë ºî¤Ã¤Æ¹½¤¤¤Þ¤»¤ó¡£¡Ö¤¤¤ä¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºÜ¤»¤¿¤¤¡×¤È¤¤¤¦Êý¤Ï"/dev/tty"¤È¤«"tty:"¤È¤« ¥Ç¥Ð¥¤¥¹¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¤³¤È¤¬¤ï¤«¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¯¤È¤¤¤¤¤«¤â¡£

mode¤ÏºÇÂ绰ʸ»ú¤Îʸ»úÎó¤Ç ¤ÇUNIX½àµò¤È»×¤ï¤ì¤Þ¤¹¡£¤³¤Îmode¤Ë±þ¤¸¤ÆO_RDONLY¤È¤«O_CREAT¤È¤«¤¬open()¤Ë ÅϤµ¤ì¤Þ¤¹¡£(¤¬¥Ç¥Ð¥¤¥¹¤Ë¤è¤Ã¤Æ¤Û¤Ü¸ÇÄê¤Ç¤·¤ç¤¦¤«¤é open()¦¤Ç̵»ë¤·¤Æ¤â¤¤¤¤¤Î¤Ç¤Ï¤Ê¤¤¤«¤È¡Ä)

DOS·ÏC½èÍý·Ï¤Ç'b'¤Ê¤·¤À¤ÈCR/LFÊÑ´¹¤·¤¿¤êCNTL-Z¤ÇEOF¤¬Î©¤Ã¤¿¤ê¤·¤Þ¤¹¤¬ H8¤Ç¤Ï'b'¤¬¤¢¤Ã¤Æ¤â¤Ê¤¯¤Æ¤âƱ¤¸¤ß¤¿¤¤¤Ç¤¹¡£

setvbuf()¤Ã¤Æ²¿¼Ô¡©
fopen()¤Î¸å¤Ë¤Ïɬ¤ºsetvbuf(FILE *fp, char *buf, int type, size_t size)¤ò¸Æ¤ÖɬÍפ¬¤¢¤ê¤Þ¤¹ (¸Æ¤Ð¤Ê¤¤¤Èmalloc()¤¬¸Æ¤Ð¤ì¤Æ¤·¤Þ¤¦)¡£ °Ê¸å¤ÏUNIX¤È¤Û¤ÜƱ¤¸Æ°ºî¤ò¤¹¤ë¤è¤¦¤Ç¤¹¡£

buf¤Ï(¤¿¤È¤¨¤Ð).bss¤Ë³ÎÊݤ·¤Æ¤¯¤À¤µ¤¤¡£advanced¤Ç¤Ïsize_t¤Ïlong¤Ç¤¹¡£
type¤Ï£³¼ïÎढ¤Ã¤Æ
typefputs()»þưºîfflush()/fclose()»þưºî
_IOFBFbuf¤¬size¤òͤ¨¤ë»þ¤Ë¸Â¤êwrite()¤¬size¤Ç¸Æ¤Ð¤ì¤Þ¤¹ »Ä¤Ã¤¿¥µ¥¤¥º(size°Ê²¼¡£È¾Ã¼¤Ç¤¹)¤Çwrite()¤¬¸Æ¤Ð¤ì¤Þ¤¹
_IOLBFbuf¤ËLF¤ò½ñ¤­¹þ¤ó¤À¤È¤­(Ãí) ¡¢buf¤¬size¤òͤ¨¤ë»þwrite()¤¬¸Æ¤Ð¤ì¤Þ¤¹ »Ä¤Ã¤¿¥µ¥¤¥º(size°Ê²¼¡£È¾Ã¼¤Ç¤¹)¤Çwrite()¤¬¸Æ¤Ð¤ì¤Þ¤¹
_IONBFwrite()¤¬1¥Ð¥¤¥È¤Ç·«¤êÊÖ¤·¸Æ¤Ð¤ì¤Þ¤¹ write()¤Ï¸Æ¤Ð¤ì¤Þ¤»¤ó
Ãí¡§¾ï¤ËLF¤ò¤Ò¤È¤Ä¥Ð¥Ã¥Õ¥¡¤ËÊú¤³¤¦¤È¤¹¤ë¤è¤¦¤Ç¡¢Ä¾´¶¤È¤Ï°Û¤Ê¤ê¤Þ¤¹¡£
¡¡fputs("aaa\n",fp);¢Í²¿¤â¤ª¤­¤Þ¤»¤ó
¡¡fputs("bbb\n",fp);¢Í"aaa\n"¤Çwrite()¤¬¸Æ¤Ð¤ì¤Þ¤¹
¡¡fputs("ccc\n",fp);¢Í"bbb\n"¤Çwrite()¤¬¸Æ¤Ð¤ì¤Þ¤¹
¡¡fflush(fp)       ;¢Í"ccc\n"¤Çwrite()¤¬¸Æ¤Ð¤ì¤Þ¤¹
¡¡fputs("aaa\nbbb\nccc\nddd",fp);¢Íwirte()¤¬£²²ó("aaa\n"¤È"bbb\n")¸Æ¤Ð¤ì"ccc\nddd"¤¬¥Ð¥Ã¥Õ¥¡¤Ë»Ä¤ê¤Þ¤¹


¤¸¤ã¤É¤ó¤Ê¥Ç¥Ð¥¤¥¹¤¬¤à¤¤¤Æ¤ë¤Î¤«¤Ê¡©

¤Ê¤«¤Ê¤«ÊØÍø¤½¤¦¤¸¤ã¤ó¡©
¥¹¥È¥ê¡¼¥à·¿¤Î¥Ç¥Ð¥¤¥¹¤«¤é¤ÎÆþÎϤϰ·¤¤¤Ë¤¯¤¤¤Ç¤¹¡£UNIX¤Ç¤¢¤ì¤Ð¤Ê¤ó¤È¤«¥Ç¡¼¥â¥ó¤ò ¤¹¤­¤Ê¤À¤±fork()¤·¤Æfgets()¤Ç¥µ¥¹¥Ú¥ó¥É¤µ¤»¤È¤±¤Ð¤¤¤¤¤Î¤Ç¤¹¤±¤É¡¢¥·¥ó¥°¥ë¥¿¥¹¥¯´Ä¶­¤Ç¤Ï fgets(,,sciFP)¤Ç¥Ö¥í¥Ã¥¯¤µ¤ì¤¿¤é¿Èư¤­¤¬¼è¤ì¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£

°ìÊý¤Ç½ÐÎϷϤ䡢EEPROM¤Ê¤É¡Öɬ¤ºÆÉ¤á¤ë¡×¥Ç¥Ð¥¤¥¹¤ÎÆþÎϤˤÏÊØÍø¤«¤â¤·¤ì¤Ê¤¤¤Ç¤¹¤Í¡£
̵ÊݾڤǤ¹¡£³Æ¼«¤ÎÀÕǤ¤Ë¤ª¤¤¤Æ¤ª´ê¤¤¤·¤Þ¤¹¡£
²òÀϤ½¤Î¾¤ÇÂçÀèÀ¸¤Ë¤´¶¨ÎϤ¤¤¿¤À¤¤¤Æ¤¤¤Þ¤¹¡£¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£(¤Ú¤³¤ê)
¾­Íè¡¢ÂçÀèÀ¸¼«¤é¾ðÊó¸ø³«¤µ¤ì¤ë²ÄǽÀ­¤â¤¢¤ë¤È¤Î¤³¤È¡¢³Ú¤·¤ß¤Ë¤·¤Þ¤·¤ç¤¦
´¶Áۤʤɤϥ᡼¥ë¤Ï¤³¤Á¤é ¤Þ¤¿¤Ï¤³¤Á¤é¤Î ¥Õ¥©¡¼¥à¤Ï¤³¤Á¤é ¤«¤é¤É¤¦¤¾¡£
¤Ä¤Ã¤³¤ß¤â¤ä¤ó¤ï¤ê¤È¤Ê¤é´¿·Þ¤·¤Þ¤¹¡£

¥È¥Ã¥×¥Ú¡¼¥¸¤Ø¤â¤É¤ë