ã¢ãŠãããŒã®ã¢ãŠããã¢(580)ïŒã³ã³ãã¥ãŒã¿ã®è©±#216ïŒããã°ã©ãã³ã°ãæè¡ãã®è©±(23)ïŒç«ãæåããæ§é åãïŒç¬ïŒãã®13
Cã§äœãã®ããã°ã©ã ïŒã·ã¹ãã ïŒãäœãæã«ã¯ãèšèšè
ãåæã«æåã®ããã°ã©ãã«ãªãããšãå²ãšããâŠâŠãšã俺ã¯çŸåœ¹æä»£ã«æã£ãŠããã
åã®èšäºã§ããããªè©±ãæžããã ãïŒïŒç¬ïŒ
ããã¯ããCèšèªã§ã©ããªããã°ã©ã ãäœãã®ããšããããšãšããçµæ§é¢ä¿ããŠãããã ããã
ãŸããCã¯æ±çšã®ããã°ã©ãã³ã°èšèªã ã
ãããããªããã°ã©ã ãäœãããšãã§ããã
Cã®ç¹åŸŽã®äžã€ã¯ãOSãå¶åŸ¡ãœããã®ãããªããŒããŠã§ã¢å¯ãã®ã·ã¹ãã ãäœãããããæå³ã¢ã»ã³ããªèšèªã«è¿ãæ§æ Œãæã£ãŠããäžæ¹ã§ã
ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã®å®è£
ã«ã䜿ãããšããç¹ã ã
ä¿ºã¯æã
Cã¯OSââããšãã°Unixââãäœãããã«äœãããèšèª
ãããã«æã£ãŠãããã ããå®éã«ã¯ãã£ãšåºãã
ã·ã¹ãã ãœããã ãã§ã¯ãªãããããããªçšéã®ããã°ã©ã ãæžããæ±çšèšèªãšããŠçºå±ããŠããããã ã
ãã¡ããã ããå€§èŠæš¡ãªæ¥åã·ã¹ãã ã®éçºã«Cã䜿ãããŠããæä»£ãããã
ãã ãCèšèªãåºãã£ãŠãã£ã1970ïœ80幎代ã®å§¿ãã€ã¡ãŒãžãããªãã
Unixäžã§åããå°ããªã³ãã³ãããã°ã©ã
ãšããã®ã¯ãããªãCãããããã°ã©ã ã®äžã€ã ãšæãã
UnixãŠãŒã¶ãŒããèªåãã¡ã®ä»äºã«å¿
èŠãªããã°ã©ã ãèªåãã¡ã§äœãã
ã·ã§ã«äžã§äœããåŠçããããã°Cã§ããã°ã©ã ãæžããå Žåã«ãã£ãŠã¯ã·ã§ã«ã¹ã¯ãªãããšçµã¿åãããã
俺ãå®éã«æ±ã£ãŠããã®ããUnixäžââå Žåã«ãã£ãŠã¯MS-DOSäžââã§åããããããããã°ã©ã ã ã£ããã
ã·ã§ã«ã®ããã³ããããã
$ äœãã®ã³ãã³ããšå©ããŠåããå§¿ãã€ã¡ãŒãžããŠããã°ã©ã ãæžãããã (^_^)
ãšãããããããã30ïœ40幎ã»ã©çµã£ãã
äžã®äžã«ã¯ããããã®ããã°ã©ãã³ã°èšèªãç»å Žãããããªããžã§ã¯ãæåãã¯ãããšããæ°ããèãæ¹ãéçºæè¡ãæ®åããã
è€éã§å€§èŠæš¡ãªã·ã¹ãã ãäœãããã®èšèªããã¬ãŒã ã¯ãŒã¯ãå±±ã»ã©ããã
ãã®çµæãçŸåšCèšèªãç¹ã«æŽ»èºããŠããã®ã¯ã
çµã¿èŸŒã¿
å¶åŸ¡
ãªã¢ã«ã¿ã€ã åŠç
OSãããã€ã¹ã«è¿ãé å
åŠçé床ãã¡ã¢ãªå¹çãéèŠãªé å
ãšãã£ããæ¯èŒçããŒããŠã§ã¢ã«è¿ããšããã«ãªã£ãŠããã
ãããCã®åŒ·ã¿ã掻ãããé åã§ããããšã¯ééããªãã
ã§ããã
Cããã°ã©ãã³ã°ãã®ãã®ãçè§£ãããšããæå³ã§ã¯ã俺ã®çŸåœ¹æä»£ã®ãããªã
äžã€ã®ä»äºããããå°ããªã³ãã³ãããã°ã©ã
ãèããŠã¿ãã®ã¯ãä»ã§ãçµæ§ããããããªãããšæã£ãŠããã
âŠâŠãšããã®ããä»åã®é·ãå眮ãã ïŒç¬ïŒ
ã§ã¯ãããªãå€å
žçãªãã ãã
ãç°¡åãªããã¹ãéèšã³ãã³ã mycountã
ãèããŠã¿ãããã
ããããšã¯ããããªæãã ã
sample.txtïŒå
¥åããã¹ãïŒ
â
ãã¡ã€ã«ãéã
â
1è¡ãã€èªã
â
æåã»åèªã»è¡æ°ãªã©ãæ°ãã
â
çµæãæšæºåºåãž
â
ãã¡ã€ã«ã®çµãããŸã§ç¹°ãè¿ã
â
ãã¡ã€ã«ãéãããïŒâ»ãè¡åããã»ç¬ïŒãã£ãããã ãïŒç¬ïŒ
ã§ãããã®ã·ã³ãã«ãªããã°ã©ã ã®äžã«ãCããã°ã©ãã³ã°ã®ç¹åŸŽãçµæ§è©°ãŸã£ãŠããã
ããšãã°ã
main(int argc, char *argv[]) â ã³ãã³ãã©ã€ã³åŒæ°
FILE *fp â ãã€ã³ã¿ã䜿ã£ããã¡ã€ã«æäœ
fopen / fgets / fclose â ãã¡ã€ã«å ¥åºå
char buf[256] â æååãšé å
while â ç¹°ãè¿ã
if â æ¡ä»¶åå²
count_words() ãªã© â 颿°ãžã®åå²ïŒã¢ãžã¥ãŒã«åïŒ
&count ãªã©ã䜿ãã° â ãã€ã³ã¿ã䜿ã£ãåŒæ°æž¡ã
stdin / stdout â æšæºå ¥åºå
ã£ãŠããå
·åã«ãªãã
ããã«ãUnixäžã®ããã°ã©ã ãšããŠèãããªãããªãã€ã¬ã¯ã·ã§ã³ããã€ãã䜿ããããã«ãããã
å
¥åãã¡ã€ã«ãã³ãã³ãã©ã€ã³åŒæ°ãšããŠã
mycount sample.txt
ãšããŠãåãã
äžæ¹ã§ãæšæºå
¥åããèªããããã«ããŠããã°ã
cat sample.txt | mycount
ãªããŠããšãã§ããã
ãããã¯ã
mycount < sample.txt
ã§ãããã
ãããããµãã«ããã°ã©ã ãæžããã ãã
ãããCèšèªãšUnixã®çµã³ã€ãã®ãé¢çœããšãããªãã ã(^o^)
ããã§ãã
äžã€ã®ããã°ã©ã ã§ âãã¹ãŠâ ãããã®ã§ã¯ãªãã
äžã€ã®ä»äºãããå°ããªããã°ã©ã ãïŒããã€ãïŒäœãããããïŒå¿ èŠã«å¿ããŠïŒ OSã®ä»çµã¿ã䜿ã£ãŠçµã¿åãããã
ããããŠããªãã€ã¬ã¯ã·ã§ã³ããã€ããæŽ»ããã
俺ãæCã§ããæžããŠããã®ãããããã âå°ããªéå
·â ã ã£ãã
ä»ãªãããã®çšåºŠã®ããã°ã©ã ãªã Python ãªããã§æžãããšãå€ããããããªããïŒç¬ïŒ
ã§ãCã§æžããŠã¿ããšã
ã³ã³ãã¥ãŒã¿ãããŒã¿ãã©ãæ±ããOSãšããã°ã©ã ãã©ãã€ãªãã£ãŠããã®ã
ããå²ããšããèŠããã£ãŠããšãïŒç¬ïŒ
ããŠã
ãã®çšåºŠã®å°ããªããã°ã©ã ã ãšãå®ã¯ãŸã ãæ§é åãã®ããããã¿ã¯ãããã»ã©ç®ç«ããªãããïŒèŠç¬ïŒ
極端ã«èšãã°ã
main()
â
ãã¡ã€ã«ãéã
â
ããŒã¿ãèªã
â
count_words()
â
çµæãåºã
ãããã§äœããŠããŸããããïŒç¬ïŒ
main() ãéšåãšããŠäœã£ã颿°ãäžã€äºã€åŒã¶çšåºŠãªãã
ã颿°ã«åããŸããããããæ§é åã§ãã
ãšèšãããŠãã
ããã ãïŒ
ãšããæããããããªïŒèŠç¬ïŒ
ãšããããããã°ã©ã ãããå°ã倧ãããªããšè©±ãå€ãã£ãŠããã
ãããã¹ããéèšããããšããäžã€ã®ä»äºãèããŠããã¯ããªã®ã«ã
ããèŠããšããã®äžã«ã¯ã
å
¥åããïŒå
¥åå
ãéžæããã§ãã¯ããïŒ
â
ããŒã¿ãè§£æããïŒããŒã¿ã®é©æ£ãã§ãã¯ãããïŒ
â
éèšããïŒéèšæ¹æ³ãè²ã
ãã£ããããïŒ
â
çµæãåºåããïŒåºåå
容ãã³ã³ãããŒã«ããïŒ
ãããã€ãã®ä»äºãããããã
ããã«ãããŒã¿ãè§£æãããã¿ãããªäžã€ã®ä»äºã®äžã«ããå¥ã®ä»äºãããã
ãéèšãããã®äžã«ãããŸãããã€ãã®ä»äºãããã
ã€ãŸãã
äžã€ã®å€§ããªåŠçãèãããããããå°ãå ·äœçãªåŠçã«åããã
ããã«ããã®åŠçãããäžæ®µçްããåŠçãžåããŠããã
âŠâŠãšããããšãå§ãããã ãã
ãããããšã
èšèšããŠããã€ãããªã®ã«ãã ãã ãããã°ã©ã ã®åœ¢ãèŠããŠããã
ãããŸã§æ¥ããšãåã«æžããã
èšèšè ãåæã«ãæåã®ããã°ã©ããã«ãªã
ãšãã話ãšã€ãªãã£ãŠããããã ã
èšèšãšããã°ã©ãã³ã°ã®å¢çãã»ã»ã»éãªã£ãŠããã ãïŒïŒç¬ïŒ
ãŸãããããã£ãŠäœæ¥ããã®ã䌌ã€ããããä»äºïŒå¯Ÿè±¡ïŒã ã£ãŠããšããåæã§ã¯ããã
ãããŠããã®ããæ¹ããããCã§ããã°ã©ã ãäœãæã«ä¿ºïŒãã¡ïŒããããã£ãŠããã
ãæ®µéç詳现åã
ãªãã ããã
ãããããšãã©ããªä»äºã®ããæ¹ã«ãªã£ãŠãããã»ã»ã»ããæ¬¡ããã®è©±ã ãªïŒç¬ïŒ
ïŒ2026-08-28ïŒ
