- 1 1. ã¯ããã«
- 2 2. ãã¡ã€ã«æäœã®åºæ¬æŠå¿µ
- 3 3. ãã¡ã€ã«ã®ãªãŒãã³ãšã¯ããŒãº
- 4 4. ãã¡ã€ã«ãžã®æžã蟌ã¿
- 5 5. ãã¡ã€ã«ããã®èªã¿èŸŒã¿
- 6 6. ãã€ããªãã¡ã€ã«ã®æäœ
- 6.1 ãã€ããªãã¡ã€ã«ãšã¯ïŒ
- 6.2 ãã€ããªãã¡ã€ã«ãæäœããäž»ãªé¢æ°
- 6.3 ãã€ããªã¢ãŒãã§ãã¡ã€ã«ãéã
- 6.4 äŸ: æ°å€ããŒã¿ããã€ããªåœ¢åŒã§ä¿å
- 6.5 ãã€ããªãã¡ã€ã«æäœã®æ³šæç¹
- 6.6 å®è·µäŸ: æ§é äœããŒã¿ã®ä¿åãšèªã¿åã
- 6.7 ãŸãšã
- 7 7. ãšã©ãŒãã³ããªã³ã°
- 8 8. å¿çš
- 9 9. FAQïŒãããã質åïŒ
- 9.1 Q1: fopené¢æ°ã§ãã¡ã€ã«ãéããªãåå ã¯äœã§ããïŒ
- 9.2 Q2: "w"ã¢ãŒããš"a"ã¢ãŒãã®éãã¯äœã§ããïŒ
- 9.3 Q3: ããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ã®éãã¯äœã§ããïŒ
- 9.4 Q4: ãã¡ã€ã«æäœäžã«ãšã©ãŒãçºçããå Žåãã©ã察åŠããã°ããã§ããïŒ
- 9.5 Q5: ãã¡ã€ã«ãéããªããšã©ããªããŸããïŒ
- 9.6 Q6: ãã€ããªãã¡ã€ã«ãèªã¿æžãããéã«æ³šæãã¹ãç¹ã¯äœã§ããïŒ
- 9.7 Q7: EOFïŒãã¡ã€ã«ã®çµç«¯ïŒãšã¯äœã§ããïŒ
- 9.8 Q8: Cèšèªã§ãã¡ã€ã«æäœãå¹ççã«åŠã¶ã«ã¯ã©ãããã°è¯ãã§ããïŒ
- 9.9 ãŸãšã
- 10 10. ãŸãšã
1. ã¯ããã«
Cèšèªã¯ããã°ã©ãã³ã°ã®åºç€ãåŠã¶äžã§éåžžã«éèŠãªèšèªã§ãããå€ãã®å Žé¢ã§äœ¿çšãããŠããŸãããã®äžã§ãããã¡ã€ã«äœæãã¯ãããã°ã©ã ãå€éšããŒã¿ãæ±ãäžã§é¿ããŠã¯éããªãåºæ¬çãªæè¡ã®äžã€ã§ãããã®èšäºã§ã¯ãCèšèªã§ã®ãã¡ã€ã«æäœãç¹ã«ãã¡ã€ã«äœæã«çŠç¹ãåœãŠãŠãåå¿è ã«ãåããããã解説ããŠãããŸãã
ãã¡ã€ã«æäœã®éèŠæ§
ããã°ã©ã ãå®è¡ããŠåŸãããããŒã¿ãä¿åããããå€éšããã®å ¥åããŒã¿ãå©çšãããããéããã¡ã€ã«æäœãå¿ èŠãšãªããŸããäŸãã°ã以äžã®ãããªå Žé¢ã§ãã¡ã€ã«æäœã¯åœ¹ç«ã¡ãŸãã
- ãã°ããŒã¿ã®ä¿å
ããã°ã©ã ã®åäœèšé²ããšã©ãŒæ å ±ãèšé²ããŠåŸããåæã§ããã - èšå®ãã¡ã€ã«ã®ç®¡ç
ãŠãŒã¶ãŒãå€æŽå¯èœãªèšå®ãå€éšãã¡ã€ã«ã«ä¿åããããã°ã©ã èµ·åæã«èªã¿åãã - ããŒã¿ããŒã¹çãªå©çš
å°èŠæš¡ãªããŒã¿ã®ä¿åã»ç®¡çããã¡ã€ã«ã§è¡ãã
ãããã®å¿çšäŸã¯ãå®éã®ããã°ã©ã éçºã«ãããŠé »ç¹ã«å¿ èŠãšãããŸããCèšèªã§ã®ãã¡ã€ã«äœæãåŠã¶ããšã§ãããã°ã©ã ã®å®çšæ§ãæ Œæ®µã«åäžããã§ãããã
ãã®èšäºã®ç®ç
ãã®èšäºã®ç®çã¯ãCèšèªã䜿ã£ãŠããã¡ã€ã«ãäœæããæ¹æ³ããåããŠåŠã¶èªè ããåºæ¬çãªãã¡ã€ã«æäœãç解ããèªãã³ãŒããæžããŠåãããããã«ãªãããšã§ãããŸãããšã©ãŒåŠçãå¿çšäŸã«ã觊ããããšã§ãå®åã«è¿ãã¹ãã«ã身ã«ã€ããããå 容ãç®æããŸãã
察象èªè
ãã®èšäºã¯ã以äžã®ãããªæ¹ã察象ãšããŠããŸãã
- CèšèªãåŠã³å§ããåå¿è
- ãã¡ã€ã«æäœã®åºç€ãç解ããã人
- ããã°ã©ã ã§ããŒã¿ä¿åãèªã¿æžããå¿ èŠãªå Žé¢ãæ³å®ããŠãã人
2. ãã¡ã€ã«æäœã®åºæ¬æŠå¿µ
Cèšèªã§ãã¡ã€ã«ãæäœããããã«ã¯ããŸããã¡ã€ã«ã®åºæ¬æŠå¿µãç解ããå¿ èŠããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãããã¡ã€ã«ãšã¯äœãããããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ã®éãããCèšèªã§ãã¡ã€ã«æäœãè¡ãéã«å¿ èŠãªæºåãã«ã€ããŠè§£èª¬ããŸãã
ãã¡ã€ã«ãšã¯äœã
ãã¡ã€ã«ãšã¯ãããŒã¿ãèšé²ããŠããããã®å ¥ãç©ã®ãããªãã®ã§ããããã°ã©ã ãå®è¡ããéã«ãå€éšã«ããŒã¿ãä¿åããããããã°ã©ã ã«å¿ èŠãªæ å ±ãå€éšããèªã¿åã£ããããããã«äœ¿çšãããŸãããã¡ã€ã«ã¯ãäž»ã«ä»¥äžã®2ã€ã«åé¡ãããŸãã
- ããã¹ããã¡ã€ã«
- 人éãèªã¿ããã圢åŒã§ããŒã¿ãèšé²ãããã¡ã€ã«ã§ãã
- äŸ:
.txt
ã.csv
ãªã©ã - ããã¹ããã¡ã€ã«ã«ã¯ãæåãæ°åãèšå·ãè¡åäœã§ä¿åã§ããŸãã
- ãã€ããªãã¡ã€ã«
- ã³ã³ãã¥ãŒã¿ãåŠçãããã圢åŒã§ããŒã¿ãèšé²ãããã¡ã€ã«ã§ãã
- äŸ:
.bin
ã.dat
ãç»åãã¡ã€ã«ïŒäŸ:.jpg
,.png
ïŒãªã©ã - ãã€ããªãã¡ã€ã«ã«ã¯ãæåã ãã§ãªãæ°å€ãç»åããŒã¿ãªã©ãããŸããŸãªåœ¢åŒã®æ å ±ãä¿åãããŸãã
ããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ã®éã
ç¹åŸŽ | ããã¹ããã¡ã€ã« | ãã€ããªãã¡ã€ã« |
---|---|---|
ããŒã¿åœ¢åŒ | 人éãèªãã圢åŒïŒASCIIãUTF-8ãªã©ïŒ | ã³ã³ãã¥ãŒã¿åãã®åœ¢åŒ |
çšé | èšå®ãã¡ã€ã«ããã°ããŒã¿ãªã© | ç»åãé³å£°ãããŒã¿ããŒã¹ãªã© |
ãµã€ãº | äžè¬çã«å€§ãããªã | ããã³ã³ãã¯ãã«ä¿åã§ãã |
æäœã®å®¹æã | ãšãã£ã¿ã§ç°¡åã«éãã | ç¹å®ã®ããã°ã©ã ã§ã®ã¿èªã¿æžãå¯èœ |
ãã€ã³ã: åå¿è ãCèšèªã§åŠã¶éã«ã¯ããŸãããã¹ããã¡ã€ã«ã®æäœãç¿åŸãããã®åŸãã€ããªãã¡ã€ã«ã®æäœã«é²ããšè¯ãã§ãããã
Cèšèªã§ã®ãã¡ã€ã«æäœã«å¿ èŠãªæºå
Cèšèªã§ã¯ãæšæºã©ã€ãã©ãªã䜿çšããŠãã¡ã€ã«ãæäœããŸãã以äžã®æºåãå¿ èŠã§ãã
æšæºããããŒãã¡ã€ã« <stdio.h>
<stdio.h>
ã¯ãCèšèªã§ãã¡ã€ã«æäœãè¡ãããã«å¿
èŠãªããããŒãã¡ã€ã«ã§ãããã®ããããŒãã¡ã€ã«ã«ã¯ããã¡ã€ã«æäœã«äœ¿çšããé¢æ°ãå«ãŸããŠããŸããäž»ãªé¢æ°ã¯ä»¥äžã®éãã§ãã
fopen
: ãã¡ã€ã«ãéããfclose
: ãã¡ã€ã«ãéãããfprintf
: ãã¡ã€ã«ã«æžã蟌ããfscanf
: ãã¡ã€ã«ããèªã¿åããfread
/fwrite
: ãã€ããªããŒã¿ãæäœããã
ãã¡ã€ã«ãã€ã³ã¿
Cèšèªã§ã¯ããã¡ã€ã«æäœãè¡ãéã«ããã¡ã€ã«ãã€ã³ã¿ããšããç¹å¥ãªå€æ°ã䜿çšããŸãããã¡ã€ã«ãã€ã³ã¿ã¯ãFILE
åã§å®çŸ©ãããŸãã
FILE *fp;
ãã®ãã¡ã€ã«ãã€ã³ã¿ã䜿çšããŠããã¡ã€ã«ãéããããããŒã¿ãèªã¿æžããããããŸãã
ãã¡ã€ã«ã¢ãŒã
ãã¡ã€ã«ãæäœããéã«ã¯ãå¿ ãã¢ãŒããæå®ããŸããã¢ãŒãã¯ããã¡ã€ã«ãã©ã®ããã«æ±ããïŒèªã¿åãå°çšãæžã蟌ã¿å°çšãªã©ïŒã決å®ããŸãã以äžã«ãäž»ãªã¢ãŒãããŸãšããŸãã
ã¢ãŒã | çšé |
---|---|
"r" | èªã¿åãå°çšïŒãã¡ã€ã«ãååšããå¿ èŠããïŒ |
"w" | æžã蟌ã¿å°çšïŒæ¢åããŒã¿ãäžæžãïŒ |
"a" | è¿œèšå°çšïŒæ¢åããŒã¿ãä¿æããŠè¿œå ïŒ |
"r+" | èªã¿åããšæžã蟌㿠|
"w+" | èªã¿åããšæžã蟌ã¿ïŒæ¢åããŒã¿ãäžæžãïŒ |
"a+" | èªã¿åããšè¿œèš |
ãŸãšã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããã¡ã€ã«ã®åºæ¬æŠå¿µãçš®é¡ãCèšèªã§ãã¡ã€ã«ãæäœããããã®æºåã«ã€ããŠè§£èª¬ããŸããã
3. ãã¡ã€ã«ã®ãªãŒãã³ãšã¯ããŒãº
Cèšèªã§ãã¡ã€ã«ãæäœããéã®æåã®ã¹ãããã¯ãããã¡ã€ã«ãéããããšã§ãããã¡ã€ã«ãæ£ããéãããšã§ãããŒã¿ã®èªã¿æžããç·šéãå¯èœã«ãªããŸãããŸãã䜿çšãããã¡ã€ã«ã¯å¿ ãéããå¿ èŠããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ããã¡ã€ã«ã®ãªãŒãã³ãšã¯ããŒãºã®æ¹æ³ãå ·äœçãªäŸã亀ããŠè§£èª¬ããŸãã
ãã¡ã€ã«ãéã: fopen
é¢æ°
Cèšèªã§ã¯ãfopen
é¢æ°ã䜿çšããŠãã¡ã€ã«ãéããŸãããã®é¢æ°ã¯ä»¥äžã®ããã«èšè¿°ããŸãã
FILE *fopen(const char *filename, const char *mode);
åŒæ°ã®èª¬æ
filename
: ãã¡ã€ã«åãæååã§æå®ããŸããäŸ:"example.txt"
mode
: ãã¡ã€ã«ãã©ã®ããã«æ±ãããæå®ããã¢ãŒãã§ããäŸ:"r"
ïŒèªã¿åãå°çšïŒã"w"
ïŒæžã蟌ã¿å°çšïŒãªã©ã
æ»ãå€
- ãã¡ã€ã«ãæ£ããéããå Žåã
FILE
åã®ãã€ã³ã¿ãè¿ãããŸãã - ãã¡ã€ã«ãéããªãã£ãå Žåã
NULL
ãè¿ãããŸãããã®å Žåããšã©ãŒåŠçãè¡ãå¿ èŠããããŸãã
åºæ¬çãªäœ¿çšäŸ: ãã¡ã€ã«ãéã
以äžã®äŸã¯ãexample.txt
ãšãããã¡ã€ã«ãèªã¿åãå°çšã¢ãŒãã§éãããã°ã©ã ã§ãã
#include <stdio.h>
int main() {
FILE *file;
// ãã¡ã€ã«ãéã
file = fopen("example.txt", "r");
// ãã¡ã€ã«ãéãããã©ããã確èª
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
printf("ãã¡ã€ã«ãæ£åžžã«éããŸããã
");
// ãã¡ã€ã«ãéãã
fclose(file);
return 0;
}
ãã€ã³ã:
- ãã¡ã€ã«ãæ£ããéããªãã£ãå Žåã¯ããšã©ãŒã¡ãã»ãŒãžã衚瀺ããããã°ã©ã ãçµäºããŸãã
- ãã¡ã€ã«æäœãçµäºããããå¿
ã
fclose
é¢æ°ã§ãã¡ã€ã«ãéããŸãã
ãã¡ã€ã«ã¢ãŒãã®çš®é¡
ãã¡ã€ã«ãéãéã®ã¢ãŒãã«ãã£ãŠãæäœå 容ãç°ãªããŸãã以äžã«ããã䜿ãããã¢ãŒããäžèŠ§ã«ãŸãšããŸãã
ã¢ãŒã | çšé |
---|---|
"r" | èªã¿åãå°çšïŒãã¡ã€ã«ãååšããå¿ èŠããïŒ |
"w" | æžã蟌ã¿å°çšïŒæ¢åãã¡ã€ã«ãããå Žåãå 容ãåé€ãããïŒ |
"a" | è¿œèšå°çšïŒæ¢åãã¡ã€ã«ãããå Žåãæ«å°Ÿã«ããŒã¿ãè¿œå ïŒ |
"r+" | èªã¿åããšæžã蟌ã¿ïŒæ¢åã®ãã¡ã€ã«å 容ãä¿æïŒ |
"w+" | èªã¿åããšæžã蟌ã¿ïŒæ¢åãã¡ã€ã«ã®å 容ãåé€ïŒ |
"a+" | èªã¿åããšè¿œèšïŒæ°ããããŒã¿ãæ«å°Ÿã«è¿œå ããªããå 容ãèªã¿åããïŒ |
ãã¡ã€ã«ãéãã: fclose
é¢æ°
ãã¡ã€ã«ãéããåŸã䜿çšãçµãã£ããå¿
ãfclose
é¢æ°ãåŒã³åºããŠãã¡ã€ã«ãéããå¿
èŠããããŸãããããæ ããšã以äžã®ãããªåé¡ãçºçããå¯èœæ§ããããŸãã
- ã¡ã¢ãªãªãŒã¯ïŒãã¡ã€ã«ãã€ã³ã¿ã解æŸãããªãïŒ
- ããŒã¿ã®æžã蟌ã¿ãå®äºããªã
- ã·ã¹ãã ãªãœãŒã¹ã®ç¡é§é£ã
åºæ¬æ§æ
int fclose(FILE *stream);
æ»ãå€
- ãã¡ã€ã«ãæ£åžžã«éããå Žåã¯
0
ãè¿ããŸãã - ãšã©ãŒãçºçããå Žåã¯
EOF
ãè¿ããŸãã
äŸ: ãã¡ã€ã«ãéãã
以äžã¯ããã¡ã€ã«ãéããäŸã瀺ããããã°ã©ã ã§ãã
#include <stdio.h>
int main() {
FILE *file;
// ãã¡ã€ã«ãéã
file = fopen("example.txt", "r");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
// ãã¡ã€ã«æäœïŒçç¥ïŒ
// ãã¡ã€ã«ãéãã
if (fclose(file) == 0) {
printf("ãã¡ã€ã«ãæ£åžžã«éããŸããã
");
} else {
printf("ãã¡ã€ã«ãéããéã«ãšã©ãŒãçºçããŸããã
");
}
return 0;
}
ãã€ã³ã:
fclose
é¢æ°ã®æ»ãå€ã確èªããããšã§ããã¡ã€ã«ãæ£åžžã«éãããããã©ãããå€æã§ããŸãã
ãšã©ãŒãã§ãã¯ã®éèŠæ§
ãã¡ã€ã«ãéãéãéããéã«ã¯ããšã©ãŒãçºçããå¯èœæ§ããããŸãã以äžã®ãããªå Žåããšã©ãŒåŠçãè¿œå ããããšã§ããã°ã©ã ã®ä¿¡é Œæ§ãåäžãããããŸãã
äž»ãªãšã©ãŒåå
- æå®ãããã¡ã€ã«ãååšããªãïŒ
"r"
ã¢ãŒãã®å ŽåïŒ - æžã蟌ã¿æš©éããªã
- ãã¡ã€ã«åãééã£ãŠãã
ãšã©ãŒåŠçã®äŸ
if (file == NULL) {
perror("ãã¡ã€ã«ãªãŒãã³ãšã©ãŒ");
return 1;
}
perror
é¢æ°ã䜿ããšããšã©ãŒã®åå ãæšæºåºåã«è¡šç€ºã§ããŸãã
ãŸãšã
fopen
é¢æ°ã䜿ã£ãŠãã¡ã€ã«ãéããfclose
é¢æ°ã§ãã¡ã€ã«ãéããŸãã- ãã¡ã€ã«ã¢ãŒããæ£ããæå®ããæäœå 容ã«å¿ããã¢ãŒããéžæããŸãã
- ãšã©ãŒåŠçãè¿œå ããããšã§ããã¡ã€ã«æäœã®å®å šæ§ãšä¿¡é Œæ§ãåäžãããŸãããã
4. ãã¡ã€ã«ãžã®æžã蟌ã¿
Cèšèªã§ãã¡ã€ã«æäœãè¡ãäžã§ãããŒã¿ãæžã蟌ãæ¹æ³ã¯éåžžã«éèŠã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãfprintf
ãfputs
ãfputc
ãšãã£ãé¢æ°ã䜿çšããŠããã¡ã€ã«ã«ããŒã¿ãæžã蟌ãæ¹æ³ã解説ããŸãããŸããå
·äœçãªãµã³ãã«ã³ãŒããéããŠãå®éã®äœ¿ãæ¹ãåŠã³ãŸãã
ãã¡ã€ã«æžã蟌ã¿ã®åºæ¬
ãã¡ã€ã«ã«ããŒã¿ãæžã蟌ãã«ã¯ã以äžã®æé ãèžãå¿ èŠããããŸãã
- ãã¡ã€ã«ãéã (
fopen
é¢æ°ã䜿çš)
æžã蟌ã¿ãè¡ãå Žåãã¢ãŒãã«"w"
ïŒæžã蟌ã¿å°çšïŒãŸãã¯"a"
ïŒè¿œèšå°çšïŒãæå®ããŸãã - æžã蟌ã¿é¢æ°ã䜿çšããŠããŒã¿ããã¡ã€ã«ã«ä¿åããã
- æžã蟌ã¿ãçµãã£ããã
fclose
é¢æ°ã䜿ã£ãŠãã¡ã€ã«ãéããã
æžã蟌ã¿é¢æ°ã®çš®é¡
Cèšèªã§ã¯ãçšéã«å¿ããŠä»¥äžã®æžã蟌ã¿é¢æ°ã䜿çšããŸãã
1. fprintfé¢æ°
fprintf
é¢æ°ã¯ããã©ãŒããããããããŒã¿ããã¡ã€ã«ã«æžã蟌ãããã«äœ¿çšãããŸãã
æ§æ
int fprintf(FILE *stream, const char *format, ...);
stream
: æžã蟌ã¿å ã®ãã¡ã€ã«ãã€ã³ã¿ãformat
: æžåŒæå®æååïŒäŸ:%d
,%s
ãªã©ïŒã- æ»ãå€: æ£åžžã«æžã蟌ãŸããæåæ°ãè¿ããŸãã
äŸ: ãã©ãŒããããããããŒã¿ã®æžã蟌ã¿
#include <stdio.h>
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
fprintf(file, "åå: %s\n幎霢: %d\n", "å±±ç°å€ªé", 25);
fclose(file);
printf("ããŒã¿ãæ£åžžã«æžã蟌ã¿ãŸããã
");
return 0;
}
2. fputsé¢æ°
fputs
é¢æ°ã¯ãæååããã®ãŸãŸãã¡ã€ã«ã«æžã蟌ãããã«äœ¿çšãããŸãã
æ§æ
int fputs(const char *str, FILE *stream);
str
: æžã蟌ãæååãstream
: æžã蟌ã¿å ã®ãã¡ã€ã«ãã€ã³ã¿ã- æ»ãå€: æåããå Žåã¯0以å€ã倱æããå Žåã¯EOFãè¿ããŸãã
äŸ: æååã®æžã蟌ã¿
#include <stdio.h>
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
fputs("ããã«ã¡ã¯ãäžçïŒ\n", file);
fclose(file);
printf("æååãæ£åžžã«æžã蟌ã¿ãŸããã
");
return 0;
}
3. fputcé¢æ°
fputc
é¢æ°ã¯ã1æåãã€ãã¡ã€ã«ã«æžã蟌ãããã«äœ¿çšãããŸãã
æ§æ
int fputc(int char, FILE *stream);
char
: æžã蟌ãæåïŒASCIIå€ãšããŠæå®ïŒãstream
: æžã蟌ã¿å ã®ãã¡ã€ã«ãã€ã³ã¿ã- æ»ãå€: æåããå Žåã¯æžã蟌ãã æåã倱æããå Žåã¯EOFãè¿ããŸãã
äŸ: 1æåãã€ã®æžã蟌ã¿
#include <stdio.h>
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
fputc('H', file);
fputc('e', file);
fputc('l', file);
fputc('l', file);
fputc('o', file);
fclose(file);
printf("æåãæ£åžžã«æžã蟌ã¿ãŸããã
");
return 0;
}
ãã¡ã€ã«ã¢ãŒããšæžã蟌ã¿
ãã¡ã€ã«ã¢ãŒãã«ãã£ãŠãããŒã¿ã®æžã蟌ã¿åäœãç°ãªããŸãã
"w"
ã¢ãŒã
- ãã¡ã€ã«ãååšããªãå Žåãæ°èŠäœæããŸãã
- ãã¡ã€ã«ãååšããå Žåãæ¢åã®ããŒã¿ãäžæžãããŸãã
"a"
ã¢ãŒã
- ãã¡ã€ã«ãååšããªãå Žåãæ°èŠäœæããŸãã
- ãã¡ã€ã«ãååšããå Žåãæ¢åã®ããŒã¿ãä¿æããæ«å°Ÿã«æ°ããããŒã¿ãè¿œå ããŸãã
泚æç¹: æžã蟌ã¿ãšã©ãŒã®åŠç
ãã¡ã€ã«æžã蟌ã¿æã«ã¯ããšã©ãŒãçºçããå ŽåããããŸããäŸãã°ããã£ã¹ã¯å®¹éäžè¶³ãæžã蟌ã¿æš©éã®æ¬ åŠãåå ãšãªãããšããããŸãããšã©ãŒåŠçãè¿œå ããããšã§ããããã®åé¡ã«å¯ŸåŠã§ããŸãã
ãšã©ãŒåŠçã®äŸ
if (fprintf(file, "ãã¹ãããŒã¿\n") < 0) {
printf("æžã蟌ã¿äžã«ãšã©ãŒãçºçããŸããã
");
}
å®è·µäŸ: ç°¡æãã°ãã¡ã€ã«äœæããã°ã©ã
以äžã¯ããã°ããŒã¿ããã¡ã€ã«ã«ä¿åããããã°ã©ã ã®äŸã§ãã
#include <stdio.h>
#include <time.h>
int main() {
FILE *file = fopen("log.txt", "a");
if (file == NULL) {
printf("ãã°ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
time_t now = time(NULL);
fprintf(file, "ãã°èšé²: %s", ctime(&now));
fclose(file);
printf("ãã°ãæ£åžžã«èšé²ããŸããã
");
return 0;
}
ãŸãšã
- ãã¡ã€ã«ãžã®æžã蟌ã¿ã«ã¯ã
fprintf
ãfputs
ãfputc
ãªã©ã®é¢æ°ã䜿çšããŸãã - ãã¡ã€ã«ã¢ãŒãïŒ
"w"
ã"a"
ïŒãé©åã«æå®ããç®çã«å¿ããåäœãå®çŸããŸãã - ãšã©ãŒåŠçãè¿œå ããããšã§ããã¡ã€ã«æäœã®å®å šæ§ãé«ããŸãããã
5. ãã¡ã€ã«ããã®èªã¿èŸŒã¿
Cèšèªã§ãã¡ã€ã«æäœãè¡ãå Žåããã¡ã€ã«ããããŒã¿ãèªã¿åãæ¹æ³ãåºæ¬çãªã¹ãã«ã®äžã€ã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ãfscanf
ãfgets
ãfgetc
ãšãã£ãé¢æ°ã䜿ã£ãããŒã¿ã®èªã¿åãæ¹æ³ã解説ããŸãããŸããå
·äœçãªäŸãéããŠãå®éã«ãã¡ã€ã«ããããŒã¿ãååŸããæ¹æ³ãåŠã³ãŸãã
ãã¡ã€ã«èªã¿åãã®åºæ¬
ãã¡ã€ã«ããããŒã¿ãèªã¿åãããã«ã¯ã以äžã®æé ãè¡ããŸãã
- ãã¡ã€ã«ãéã (
fopen
é¢æ°ã䜿çš)
èªã¿åãã®å Žåãã¢ãŒãã«"r"
ïŒèªã¿åãå°çšïŒãæå®ããŸãã - èªã¿åãé¢æ°ã䜿çšããŠããŒã¿ãååŸããŸãã
- èªã¿åããçµãã£ããã
fclose
é¢æ°ã䜿ã£ãŠãã¡ã€ã«ãéããŸãã
èªã¿åãé¢æ°ã®çš®é¡
Cèšèªã§ã¯ãçšéã«å¿ããŠä»¥äžã®é¢æ°ã䜿çšããŠããŒã¿ãèªã¿åããŸãã
1. fscanfé¢æ°
fscanf
é¢æ°ã¯ããã©ãŒããããããããŒã¿ããã¡ã€ã«ããèªã¿åãéã«äœ¿çšãããŸãã
æ§æ
int fscanf(FILE *stream, const char *format, ...);
stream
: èªã¿åããã¡ã€ã«ãã€ã³ã¿ãformat
: èªã¿åããã©ãŒãããïŒäŸ:%d
,%s
ïŒã- æ»ãå€: æ£åžžã«èªã¿åããé
ç®æ°ãè¿ããŸãã倱æãããš
EOF
ãè¿ãããŸãã
äŸ: ãã©ãŒããããããããŒã¿ã®èªã¿åã
#include <stdio.h>
int main() {
FILE *file = fopen("data.txt", "r");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
char name[50];
int age;
fscanf(file, "%s %d", name, &age);
printf("åå: %s, 幎霢: %d\n", name, age);
fclose(file);
return 0;
}
2. fgetsé¢æ°
fgets
é¢æ°ã¯ããã¡ã€ã«ãã1è¡ãã€ããŒã¿ãèªã¿åãã®ã«é©ããŠããŸãã
æ§æ
char *fgets(char *str, int n, FILE *stream);
str
: èªã¿åã£ãããŒã¿ãæ ŒçŽããé åãn
: èªã¿åãæ倧æåæ°ïŒstr
ã®ãµã€ãºä»¥äžïŒãstream
: èªã¿åããã¡ã€ã«ãã€ã³ã¿ã- æ»ãå€: æåãããš
str
ãè¿ãã倱æãŸãã¯EOFã®å Žåã¯NULL
ãè¿ããŸãã
äŸ: 1è¡ãã€ã®ããŒã¿èªã¿åã
#include <stdio.h>
int main() {
FILE *file = fopen("data.txt", "r");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
char line[100];
while (fgets(line, sizeof(line), file) != NULL) {
printf("%s", line);
}
fclose(file);
return 0;
}
3. fgetcé¢æ°
fgetc
é¢æ°ã¯ããã¡ã€ã«ãã1æåãã€ããŒã¿ãèªã¿åãéã«äœ¿çšãããŸãã
æ§æ
int fgetc(FILE *stream);
stream
: èªã¿åããã¡ã€ã«ãã€ã³ã¿ã- æ»ãå€: èªã¿åã£ãæåïŒASCIIå€ïŒãè¿ããŸãã倱æãŸãã¯EOFã®å Žåã¯
EOF
ãè¿ããŸãã
äŸ: 1æåãã€ã®ããŒã¿èªã¿åã
#include <stdio.h>
int main() {
FILE *file = fopen("data.txt", "r");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
int c;
while ((c = fgetc(file)) != EOF) {
putchar(c);
}
fclose(file);
return 0;
}
EOFïŒEnd Of FileïŒã®æ±ã
EOF
ã¯ããã¡ã€ã«ã®çµç«¯ã瀺ãç¹å¥ãªå€ã§ããèªã¿åãé¢æ°ãEOF
ãè¿ããå Žåããã¡ã€ã«ã®çµç«¯ã«å°éããããšãæå³ããŸãã
EOFã確èªããäŸ
int c;
while ((c = fgetc(file)) != EOF) {
putchar(c);
}
泚æç¹:
EOF
ã¯éåžž-1
ãšããŠå®çŸ©ãããŠããŸãããããã°ã©ã å ã§ã¯EOF
ãšæ¯èŒããã®ãæšå¥šãããŸãã
å®è·µäŸ: èšå®ãã¡ã€ã«ã®èªã¿èŸŒã¿
以äžã¯ãèšå®ãã¡ã€ã«ïŒäŸ: config.txt
ïŒããèšå®ããŒã¿ãèªã¿åãããã°ã©ã ã®äŸã§ãã
config.txt
ã®å
容
username admin
password 12345
ããã°ã©ã äŸ
#include <stdio.h>
int main() {
FILE *file = fopen("config.txt", "r");
if (file == NULL) {
printf("èšå®ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
char key[50], value[50];
while (fscanf(file, "%s %s", key, value) != EOF) {
printf("%s: %s\n", key, value);
}
fclose(file);
return 0;
}
å®è¡çµæ
username: admin
password: 12345
ãŸãšã
- ãã¡ã€ã«ããã®ããŒã¿èªã¿åãã«ã¯ã
fscanf
ãfgets
ãfgetc
ãªã©ã®é¢æ°ãçšéã«å¿ããŠäœ¿ãåããŸãã - ãã¡ã€ã«ãèªã¿åãéã«ã¯ã
EOF
ã確èªããŠæ£ããããŒã¿ãåŠçããããšãéèŠã§ãã - å®è·µçãªçšéã§ã¯ãèšå®ãã¡ã€ã«ããã°ãã¡ã€ã«ã®èªã¿èŸŒã¿ã«å¿çšã§ããŸãã
6. ãã€ããªãã¡ã€ã«ã®æäœ
Cèšèªã§ã¯ããã€ããªåœ¢åŒã§ãã¡ã€ã«ãæ±ãããšãã§ããŸãããã€ããªãã¡ã€ã«ã¯ãããã¹ããã¡ã€ã«ãšç°ãªãã人éã«ã¯èªã¿ã«ãã圢åŒã§ãããããŒã¿ãµã€ãºãå°ãããé«éãªèªã¿æžããå¯èœã§ãããã®ã»ã¯ã·ã§ã³ã§ã¯ããã€ããªãã¡ã€ã«ãæäœããããã®åºç€ç¥èãšå ·äœçãªäœ¿çšäŸã玹ä»ããŸãã
ãã€ããªãã¡ã€ã«ãšã¯ïŒ
ãã€ããªãã¡ã€ã«ã¯ãããŒã¿ããã®ãŸãŸã®åœ¢åŒã§ä¿åãããã¡ã€ã«ã§ãã以äžã¯ããã€ããªãã¡ã€ã«ã®ç¹åŸŽã§ãã
- å¹ççãªããŒã¿ä¿å
ãã€ããªåœ¢åŒã§ã¯ãããŒã¿ããã®ãŸãŸä¿åããããããããã¹ã圢åŒãããå¹ççã«ããŒã¿ãæ ŒçŽã§ããŸãã - æ±çšæ§ã®é«ã
ç»åãã¡ã€ã«ãé³å£°ãã¡ã€ã«ãå§çž®ãã¡ã€ã«ãªã©ãããŸããŸãªåœ¢åŒã§äœ¿çšãããŸãã - 人éã«ã¯èªããªã圢åŒ
ä¿åãããããŒã¿ããã®ãŸãŸããã¹ããšãã£ã¿ã§éããšãæååãããããã«èŠããããšãå€ãã§ãã
ãã€ããªãã¡ã€ã«ãæäœããäž»ãªé¢æ°
Cèšèªã§ã¯ããã€ããªããŒã¿ãèªã¿æžãããããã«ãfread
é¢æ°ãšfwrite
é¢æ°ã䜿çšããŸãã
1. freadé¢æ°
fread
é¢æ°ã¯ããã€ããªããŒã¿ããã¡ã€ã«ããèªã¿åãéã«äœ¿çšããŸãã
æ§æ
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
ptr
: èªã¿åã£ãããŒã¿ãæ ŒçŽãããã€ã³ã¿ãsize
: 1ã€ã®ããŒã¿ã®ãµã€ãºïŒãã€ãåäœïŒãcount
: èªã¿åãããŒã¿ã®åæ°ãstream
: èªã¿åããã¡ã€ã«ãã€ã³ã¿ã
2. fwriteé¢æ°
fwrite
é¢æ°ã¯ããã€ããªããŒã¿ããã¡ã€ã«ã«æžã蟌ãéã«äœ¿çšããŸãã
æ§æ
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
ptr
: æžã蟌ãããŒã¿ãæããã€ã³ã¿ãsize
: 1ã€ã®ããŒã¿ã®ãµã€ãºïŒãã€ãåäœïŒãcount
: æžã蟌ãããŒã¿ã®åæ°ãstream
: æžã蟌ã¿å ã®ãã¡ã€ã«ãã€ã³ã¿ã
ãã€ããªã¢ãŒãã§ãã¡ã€ã«ãéã
ãã€ããªãã¡ã€ã«ãæäœããéã¯ãfopen
é¢æ°ã®ã¢ãŒãã«"b"
ãå«ããŸãã
"rb"
: ãã€ããªèªã¿åãå°çšã"wb"
: ãã€ããªæžã蟌ã¿å°çšã"ab"
: ãã€ããªè¿œèšå°çšã
äŸ: æ°å€ããŒã¿ããã€ããªåœ¢åŒã§ä¿å
ããŒã¿ãæžã蟌ãããã°ã©ã
以äžã¯ãæŽæ°ããŒã¿ããã€ããªåœ¢åŒã§ãã¡ã€ã«ã«ä¿åããããã°ã©ã ã§ãã
#include <stdio.h>
int main() {
FILE *file = fopen("data.bin", "wb");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
int numbers[] = {1, 2, 3, 4, 5};
size_t size = sizeof(numbers) / sizeof(numbers[0]);
fwrite(numbers, sizeof(int), size, file);
fclose(file);
printf("ããŒã¿ããã€ããªåœ¢åŒã§ä¿åããŸããã
");
return 0;
}
ããŒã¿ãèªã¿èŸŒãããã°ã©ã
äžèšã§ä¿åãããã€ããªããŒã¿ãèªã¿èŸŒãããã°ã©ã ã¯ä»¥äžã®éãã§ãã
#include <stdio.h>
int main() {
FILE *file = fopen("data.bin", "rb");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
int numbers[5];
fread(numbers, sizeof(int), 5, file);
printf("èªã¿èŸŒãã ããŒã¿: ");
for (int i = 0; i < 5; i++) {
printf("%d ", numbers[i]);
}
fclose(file);
return 0;
}
å®è¡çµæ
èªã¿èŸŒãã ããŒã¿: 1 2 3 4 5
ãã€ããªãã¡ã€ã«æäœã®æ³šæç¹
- ããŒã¿ãµã€ãºã®äžèŽ
fread
ãfwrite
ã䜿çšããéãæ£ãããµã€ãºãæå®ããããšãéèŠã§ãã誀ã£ããµã€ãºãæå®ãããšãããŒã¿ã®èªã¿æžãã«å€±æããŸãã - ãšã©ãŒãã§ãã¯
ãã¡ã€ã«æäœäžã«ãšã©ãŒãçºçããå Žåãferror
é¢æ°ã䜿çšããŠãšã©ãŒç¶æ ã確èªã§ããŸãã - ããŒã¿ã®ç§»æ€æ§
ãã€ããªåœ¢åŒã§ä¿åããããã¡ã€ã«ã¯ãç°ãªããã©ãããã©ãŒã éã§äºææ§ããªãå ŽåããããŸããç¹ã«ãšã³ãã£ã¢ã³ïŒããã°ãšã³ãã£ã¢ã³ãšãªãã«ãšã³ãã£ã¢ã³ïŒã®éãã«æ³šæãå¿ èŠã§ãã
å®è·µäŸ: æ§é äœããŒã¿ã®ä¿åãšèªã¿åã
æ§é äœãä¿åããããã°ã©ã
以äžã¯ãæ§é äœããŒã¿ããã€ããªåœ¢åŒã§ä¿åããäŸã§ãã
#include <stdio.h>
typedef struct {
char name[50];
int age;
float salary;
} Employee;
int main() {
FILE *file = fopen("employee.bin", "wb");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
Employee emp = {"å±±ç°å€ªé", 30, 450000.0};
fwrite(&emp, sizeof(Employee), 1, file);
fclose(file);
printf("åŸæ¥å¡ããŒã¿ãä¿åããŸããã
");
return 0;
}
æ§é äœãèªã¿åãããã°ã©ã
ä¿åãããæ§é äœããŒã¿ãèªã¿åãããã°ã©ã ã¯ä»¥äžã®éãã§ãã
#include <stdio.h>
typedef struct {
char name[50];
int age;
float salary;
} Employee;
int main() {
FILE *file = fopen("employee.bin", "rb");
if (file == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
Employee emp;
fread(&emp, sizeof(Employee), 1, file);
printf("åå: %s\n幎霢: %d\n絊äž: %.2f\n", emp.name, emp.age, emp.salary);
fclose(file);
return 0;
}
å®è¡çµæ
åå: å±±ç°å€ªé
幎霢: 30
絊äž: 450000.00
ãŸãšã
- ãã€ããªãã¡ã€ã«ã¯ããŒã¿ãå¹ççã«ä¿åã§ãã
fread
ãšfwrite
ã䜿çšããŠæäœããŸãã - ãã¡ã€ã«ã¢ãŒãã«
"b"
ãæå®ããŠãã€ããªã¢ãŒãã§ãã¡ã€ã«ãéããŸãã - ããŒã¿ãµã€ãºããšã©ãŒãã§ãã¯ã«æ³šæããæ£ç¢ºãªãã¡ã€ã«æäœãè¡ããŸãããã
7. ãšã©ãŒãã³ããªã³ã°
ãã¡ã€ã«æäœãè¡ãéããšã©ãŒã¯é¿ããããªããã®ã§ããCèšèªã§ã¯ããšã©ãŒãçºçããå Žåã«é©åã«å¯ŸåŠããããšã§ãããã°ã©ã ã®ä¿¡é Œæ§ãšå®å®æ§ãåäžãããããšãã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ããã¡ã€ã«æäœã§ãããããšã©ãŒãšããããæ€åºã解決ããæ¹æ³ã«ã€ããŠè§£èª¬ããŸãã
ãã¡ã€ã«æäœã§çºçããäž»ãªãšã©ãŒ
以äžã¯ãCèšèªã§ãã¡ã€ã«æäœãè¡ãéã«çºçãåŸãäžè¬çãªãšã©ãŒã§ãã
- ãã¡ã€ã«ãéããªã
- åå : ãã¡ã€ã«ãååšããªãããã¹ãééã£ãŠããããŸãã¯æš©éããªãã
- 解決æ³:
fopen
ã®æ»ãå€ã確èªããŠãšã©ãŒãåŠçããŸãã
- æžã蟌ã¿ãŸãã¯èªã¿åããšã©ãŒ
- åå : ãã£ã¹ã¯å®¹éã®äžè¶³ãããã¡ã€ã«ãèªã¿åãå°çšã«ãªã£ãŠããã
- 解決æ³: æžã蟌ã¿ã»èªã¿åãæäœåŸã«ãšã©ãŒããã§ãã¯ããŸãã
- ãã¡ã€ã«ã®çµç«¯ã«éããïŒEOFïŒ
- åå : ãã¡ã€ã«ãæåŸãŸã§èªã¿åã£ãã
- 解決æ³: EOFãæ£ããæ±ãã
- ãã¡ã€ã«ãã€ã³ã¿ã®äžæ£äœ¿çš
- åå : ãã¡ã€ã«ãã€ã³ã¿ãç¡å¹ãŸãã¯éããããŠããã
- 解決æ³: ãã€ã³ã¿ãNULLãã©ããã確èªããŸãã
ãšã©ãŒæ€åºã®åºæ¬çãªæ¹æ³
1. fopené¢æ°ã®æ»ãå€ã確èªãã
fopen
é¢æ°ã¯ããã¡ã€ã«ãæ£åžžã«éããå Žåã¯ãã¡ã€ã«ãã€ã³ã¿ãè¿ããŸããããšã©ãŒãçºçããå Žåã¯NULL
ãè¿ããŸãã
äŸ: ãã¡ã€ã«ãéããªãå Žåã®åŠç
FILE *file = fopen("nonexistent.txt", "r");
if (file == NULL) {
perror("ãã¡ã€ã«ãªãŒãã³ãšã©ãŒ");
return 1;
}
ãã€ã³ã:
perror
é¢æ°ã¯ãçŽåã«çºçãããšã©ãŒã®è©³çŽ°ãªèª¬æãåºåããŸãã
2. æžã蟌ã¿ã»èªã¿åããšã©ãŒã®ç¢ºèª
fwrite
ãfread
ã䜿çšããåŸãããŒã¿ãæ£ããåŠçããããã確èªããŸãã
äŸ: fwriteåŸã®ãšã©ãŒç¢ºèª
size_t written = fwrite(data, sizeof(int), 5, file);
if (written < 5) {
printf("ããŒã¿æžã蟌ã¿ãšã©ãŒãçºçããŸããã
");
}
äŸ: freadåŸã®ãšã©ãŒç¢ºèª
size_t read = fread(data, sizeof(int), 5, file);
if (read < 5) {
if (feof(file)) {
printf("ãã¡ã€ã«ã®çµç«¯ã«å°éããŸããã
");
} else if (ferror(file)) {
printf("èªã¿åãäžã«ãšã©ãŒãçºçããŸããã
");
}
}
3. feofé¢æ°ãšferroré¢æ°ã®äœ¿çš
feof
é¢æ°
ãã¡ã€ã«ã®çµç«¯ã«éãããã確èªããŸãã
æ»ãå€: çµç«¯ã«éããŠããã°éãŒãå€ãè¿ããŸããferror
é¢æ°
ãã¡ã€ã«æäœäžã«ãšã©ãŒãçºçãããã確èªããŸãã
æ»ãå€: ãšã©ãŒãçºçããŠããã°éãŒãå€ãè¿ããŸãã
äŸ: ãã¡ã€ã«ã®èªã¿åãäžã«EOFãšãšã©ãŒã確èªãã
int c;
while ((c = fgetc(file)) != EOF) {
putchar(c);
}
if (feof(file)) {
printf("ãã¡ã€ã«ã®çµç«¯ã«å°éããŸããã
");
} else if (ferror(file)) {
printf("ãã¡ã€ã«èªã¿åãäžã«ãšã©ãŒãçºçããŸããã
");
}
ãšã©ãŒåŠçã®ãã¹ããã©ã¯ãã£ã¹
- ãšã©ãŒåŠçãæ©æã«è¡ã
ãã¡ã€ã«ãéã段éã§ãšã©ãŒãæ€åºããããã°ã©ã ã®åŸç¶åŠçã«åœ±é¿ãäžããªãããã«ããŸãã - 詳现ãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ãã
ãŠãŒã¶ãŒãéçºè ãåé¡ãç¹å®ãããããªãããã«ããšã©ãŒã®å 容ãæ確ã«äŒããŸãã - ãªãœãŒã¹ã確å®ã«è§£æŸãã
ãšã©ãŒãçºçããå Žåã§ããéããŠãããã¡ã€ã«ãé©åã«éããããã«ããŸãã
äŸ: ãã¡ã€ã«æäœäžã®ãªãœãŒã¹è§£æŸ
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("ãã¡ã€ã«ãªãŒãã³ãšã©ãŒ");
return 1;
}
// ãã¡ã€ã«æäœïŒçç¥ïŒ
if (fclose(file) != 0) {
printf("ãã¡ã€ã«ã¯ããŒãºãšã©ãŒãçºçããŸããã
");
}
å®è·µäŸ: å®å šãªãã¡ã€ã«èªã¿åãããã°ã©ã
以äžã¯ããã¡ã€ã«èªã¿åãäžã®ãšã©ãŒãå®å šã«åŠçããããã°ã©ã ã®äŸã§ãã
#include <stdio.h>
int main() {
FILE *file = fopen("data.txt", "r");
if (file == NULL) {
perror("ãã¡ã€ã«ãªãŒãã³ãšã©ãŒ");
return 1;
}
char buffer[100];
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer);
}
if (feof(file)) {
printf("
æ£åžžã«ãã¡ã€ã«ãèªã¿åããŸããã
");
} else if (ferror(file)) {
printf("
èªã¿åãäžã«ãšã©ãŒãçºçããŸããã
");
}
fclose(file);
return 0;
}
ãŸãšã
- ãã¡ã€ã«æäœäžã®ãšã©ãŒã¯ã
fopen
ãfwrite
ãfread
ãªã©ã®æ»ãå€ã確èªããŠæ€åºããŸãã feof
ãferror
ã䜿çšããŠããã¡ã€ã«ã®ç¶æ ã詳现ã«ç¢ºèªããŸãããã- ãšã©ãŒåŠçãé©åã«å®è£ ããããšã§ãããã°ã©ã ã®ä¿¡é Œæ§ãšå®å®æ§ãåäžãããããšãã§ããŸãã

8. å¿çš
Cèšèªã®ãã¡ã€ã«æäœãç解ããããå¿çšçãªæäœã«ãææŠããŠã¿ãŸãããããã®ã»ã¯ã·ã§ã³ã§ã¯ãè€æ°ãã¡ã€ã«ã®åææäœãäžæãã¡ã€ã«ã®å©çšããã¡ã€ã«ã®ãªããŒã ãåé€ãšãã£ãå¿çšçãªãã¯ããã¯ã玹ä»ããŸããããããç¿åŸããããšã§ãããå®è·µçãªããã°ã©ã ãäœæã§ããããã«ãªããŸãã
è€æ°ãã¡ã€ã«ã®åææäœ
Cèšèªã§ã¯ãè€æ°ã®ãã¡ã€ã«ãåæã«éããŠæäœããããšãã§ããŸããããã«ããããã°ãã¡ã€ã«ãšãšã©ãŒãã¡ã€ã«ãå¥ã ã«èšé²ãããªã©ãè€éãªæäœãå¯èœã«ãªããŸãã
äŸ: ãã°ãã¡ã€ã«ãšãšã©ãŒãã¡ã€ã«ã®åææäœ
#include <stdio.h>
int main() {
FILE *logFile = fopen("log.txt", "w");
FILE *errorFile = fopen("error.txt", "w");
if (logFile == NULL || errorFile == NULL) {
printf("ãã¡ã€ã«ãéããŸããã§ããã
");
return 1;
}
fprintf(logFile, "ãã°: ããã°ã©ã ãæ£åžžã«å®è¡ãããŸããã
");
fprintf(errorFile, "ãšã©ãŒ: äºæããªãå
¥åãæ€åºãããŸããã
");
fclose(logFile);
fclose(errorFile);
printf("ãã°ãšãšã©ãŒãèšé²ãããŸããã
");
return 0;
}
ãã€ã³ã:
- è€æ°ã®
FILE
ãã€ã³ã¿ãå©çšããŠãç°ãªãç®çã®ããŒã¿ãå¥ã ã®ãã¡ã€ã«ã«ä¿åããŸãã - éãããã¡ã€ã«ã¯å šãŠç¢ºå®ã«éããããã«ããŸãã
äžæãã¡ã€ã«ã®å©çš
äžæãã¡ã€ã«ã¯ãããã°ã©ã ã®å®è¡äžã«äžæçãªããŒã¿ãä¿åããããã«äœ¿çšãããŸããããã°ã©ã çµäºæã«èªåçã«åé€ããããããã»ãã¥ãªãã£ããªãœãŒã¹ç®¡çã®èŠ³ç¹ãã䟿å©ã§ãã
tmpfileé¢æ°ã䜿çšããäžæãã¡ã€ã«ã®äœæ
tmpfile
é¢æ°ã䜿ããšãäžæãã¡ã€ã«ãç°¡åã«äœæã§ããŸãã
äŸ: äžæãã¡ã€ã«ã®å©çš
#include <stdio.h>
int main() {
FILE *tempFile = tmpfile();
if (tempFile == NULL) {
printf("äžæãã¡ã€ã«ãäœæã§ããŸããã§ããã
");
return 1;
}
fprintf(tempFile, "ãã®ããŒã¿ã¯äžæçã«ä¿åãããŸãã
");
// äžæãã¡ã€ã«ã®å
容ãèªã¿åã
rewind(tempFile);
char buffer[100];
fgets(buffer, sizeof(buffer), tempFile);
printf("äžæãã¡ã€ã«ã®å
容: %s", buffer);
// äžæãã¡ã€ã«ã¯èªåçã«åé€ããã
fclose(tempFile);
return 0;
}
ãã€ã³ã:
- äžæãã¡ã€ã«ã®å
容ãåå©çšããå Žåã¯ã
rewind
é¢æ°ã§ãã¡ã€ã«ãã€ã³ã¿ãå é ã«æ»ããŸãã - ãã¡ã€ã«ã¯ããã°ã©ã çµäºæã«èªåçã«åé€ããããããæåã§åé€ããå¿ èŠã¯ãããŸããã
ãã¡ã€ã«ã®ãªããŒã ãšåé€
Cèšèªã§ã¯ãæ¢åã®ãã¡ã€ã«ããªããŒã ïŒååå€æŽïŒããããåé€ãããããããšãã§ããŸãã
renameé¢æ°: ãã¡ã€ã«åã®å€æŽ
æ§æ
int rename(const char *oldname, const char *newname);
oldname
: å€æŽåã®ãã¡ã€ã«åãnewname
: å€æŽåŸã®ãã¡ã€ã«åã- æ»ãå€: æåãããš0ãè¿ãã倱æãããšéãŒãå€ãè¿ããŸãã
äŸ: ãã¡ã€ã«åã®å€æŽ
#include <stdio.h>
int main() {
if (rename("oldfile.txt", "newfile.txt") == 0) {
printf("ãã¡ã€ã«åãå€æŽããŸããã
");
} else {
printf("ãã¡ã€ã«åã®å€æŽã«å€±æããŸããã
");
}
return 0;
}
removeé¢æ°: ãã¡ã€ã«ã®åé€
æ§æ
int remove(const char *filename);
filename
: åé€ãããã¡ã€ã«åã- æ»ãå€: æåãããš0ãè¿ãã倱æãããšéãŒãå€ãè¿ããŸãã
äŸ: ãã¡ã€ã«ã®åé€
#include <stdio.h>
int main() {
if (remove("unnecessary.txt") == 0) {
printf("ãã¡ã€ã«ãåé€ããŸããã
");
} else {
printf("ãã¡ã€ã«ã®åé€ã«å€±æããŸããã
");
}
return 0;
}
ãã€ã³ã:
- ãã¡ã€ã«åå€æŽãåé€ã®éã«ã¯ããã¡ã€ã«ãååšããŠããããäºåã«ç¢ºèªããããšãæšå¥šãããŸãã
- åé€ããªããŒã ã«å€±æããå Žåã¯ããšã©ãŒã®åå ã確èªããŸãã
å®è·µäŸ: ãã¡ã€ã«ç®¡çããŒã«
以äžã¯ããªããŒã ãšåé€ãçµã¿åãããç°¡åãªãã¡ã€ã«ç®¡çããã°ã©ã ã®äŸã§ãã
#include <stdio.h>
int main() {
// ãã¡ã€ã«åãå€æŽ
if (rename("tempfile.txt", "finalfile.txt") == 0) {
printf("ãã¡ã€ã«åã'finalfile.txt'ã«å€æŽããŸããã
");
} else {
printf("ãã¡ã€ã«åã®å€æŽã«å€±æããŸããã
");
}
// ãã¡ã€ã«ãåé€
if (remove("finalfile.txt") == 0) {
printf("ãã¡ã€ã«'finalfile.txt'ãåé€ããŸããã
");
} else {
printf("ãã¡ã€ã«ã®åé€ã«å€±æããŸããã
");
}
return 0;
}
ãŸãšã
- è€æ°ãã¡ã€ã«ãåæã«æäœããããšã§ãè€éãªããã°ã©ã ã®æ§ç¯ãå¯èœã«ãªããŸãã
- äžæãã¡ã€ã«ãå©çšãããšãã»ãã¥ãªãã£ãå¹çæ§ãåäžããŸãã
rename
ãremove
ã䜿çšããŠããã¡ã€ã«ã®ç®¡çãç°¡åã«è¡ããŸãã
9. FAQïŒãããã質åïŒ
ããã§ã¯ãCèšèªã®ãã¡ã€ã«æäœã«ã€ããŠãèªè ãããçåã«æããã€ã³ããQ&A圢åŒã§è§£èª¬ããŸããåºæ¬çãªçåããå¿çšçãªå 容ãŸã§ãç解ãæ·±ããããã®åèã«ããŠãã ããã
Q1: fopen
é¢æ°ã§ãã¡ã€ã«ãéããªãåå ã¯äœã§ããïŒ
A1:
以äžã®ãããªçç±ãèããããŸãã
- ãã¡ã€ã«ãååšããªãïŒ
"r"
ã¢ãŒãã®å ŽåïŒã - ãã¡ã€ã«ã®ãã¹ãééã£ãŠããã
- èªã¿åããŸãã¯æžã蟌ã¿ã®æš©éããªãã
- ãã£ã¹ã¯å®¹éãäžè¶³ããŠããã
解決æ¹æ³:
- ãã¡ã€ã«åãšãã¹ã確èªããŠãã ããã
- ãã¡ã€ã«ãååšããªãå Žåã¯ã
"w"
ã¢ãŒããŸãã¯"a"
ã¢ãŒãã§æ°èŠäœæããŸãã - ãã¡ã€ã«ã®æš©éã確èªããé©åãªæš©éãä»äžããŸãã
Q2: "w"
ã¢ãŒããš"a"
ã¢ãŒãã®éãã¯äœã§ããïŒ
A2:
"w"
ã¢ãŒãïŒæžã蟌ã¿å°çšïŒ- ãã¡ã€ã«ãååšããå Žåããã®å 容ã¯ãã¹ãŠåé€ãããŸãã
- ãã¡ã€ã«ãååšããªãå Žåãæ°èŠäœæãããŸãã
"a"
ã¢ãŒãïŒè¿œèšå°çšïŒ- ãã¡ã€ã«ãååšããå Žåãæ¢åã®å 容ã¯ä¿æãããæ°ããããŒã¿ã¯æ«å°Ÿã«è¿œå ãããŸãã
- ãã¡ã€ã«ãååšããªãå Žåãæ°èŠäœæãããŸãã
Q3: ããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ã®éãã¯äœã§ããïŒ
A3:
ç¹åŸŽ | ããã¹ããã¡ã€ã« | ãã€ããªãã¡ã€ã« |
---|---|---|
ããŒã¿åœ¢åŒ | 人éãèªãã圢åŒïŒASCIIãUTF-8ãªã©ïŒ | ã³ã³ãã¥ãŒã¿åãã®åœ¢åŒ |
çšé | èšå®ãã¡ã€ã«ããã°ããŒã¿ãªã© | ç»åãé³å£°ãããŒã¿ããŒã¹ãªã© |
ãµã€ãº | äžè¬çã«å€§ãããªã | ããã³ã³ãã¯ãã«ä¿åã§ãã |
æäœã®å®¹æã | ãšãã£ã¿ã§ç°¡åã«éãã | ç¹å®ã®ããã°ã©ã ã§ã®ã¿èªã¿æžãå¯èœ |
ãã€ã³ã: åå¿è ã¯ãŸãããã¹ããã¡ã€ã«æäœããå§ãããšè¯ãã§ãããã
Q4: ãã¡ã€ã«æäœäžã«ãšã©ãŒãçºçããå Žåãã©ã察åŠããã°ããã§ããïŒ
A4:
ãšã©ãŒãçºçããå Žåã¯ä»¥äžã確èªããŸãïŒ
- ãã¡ã€ã«ãã€ã³ã¿ã®ç¢ºèª:
ãã¡ã€ã«ãéãéã«fopen
ãNULLãè¿ããŠããªãã確èªããŸãã - ãšã©ãŒã¡ãã»ãŒãžã®è¡šç€º:
perror
é¢æ°ã䜿çšããŠè©³çŽ°ãªãšã©ãŒæ å ±ã衚瀺ããŸãã ferror
ãšfeof
ã®æŽ»çš:
èªã¿åããæžã蟌ã¿äžã«ãšã©ãŒãçºçããå Žåããããã®é¢æ°ã§ç¶æ ã確èªããŸãã
Q5: ãã¡ã€ã«ãéããªããšã©ããªããŸããïŒ
A5:
- ããŒã¿ãæ£ããä¿åãããªãå¯èœæ§ããããŸãã
- éãããã¡ã€ã«ãéããããªããŸãŸã«ãªããšãã¡ã¢ãªãªãŒã¯ããªãœãŒã¹äžè¶³ã®åå ãšãªããŸãã
- ç¹ã«ããã°ã©ã ãè€æ°ã®ãã¡ã€ã«ãéãå Žåãæªéãã®ãã¡ã€ã«ãå¢ãããšã·ã¹ãã ã«è² è·ãããããŸãã
解決æ¹æ³:
fclose
é¢æ°ãå¿ ã䜿çšãããšã©ãŒåŠçãè¿œå ããŠãã ããã
Q6: ãã€ããªãã¡ã€ã«ãèªã¿æžãããéã«æ³šæãã¹ãç¹ã¯äœã§ããïŒ
A6:
- ããŒã¿ãµã€ãº:
fread
ãfwrite
ã§æå®ããããŒã¿ãµã€ãºãæ£ç¢ºã«èšå®ããŸãã - ãšã³ãã£ã¢ã³ã®éã:
ç°ãªããã©ãããã©ãŒã éã§ãã€ããªãã¡ã€ã«ã䜿çšããå Žåããšã³ãã£ã¢ã³ïŒããã°ãšã³ãã£ã¢ã³ãšãªãã«ãšã³ãã£ã¢ã³ïŒã®éãã«æ³šæããŠãã ããã - ããŒã¿ã®æŽåæ§:
ãã¡ã€ã«ãæ£ããééããããŒã¿ãæ倱ããªãããã«ããŸãããã
Q7: EOFïŒãã¡ã€ã«ã®çµç«¯ïŒãšã¯äœã§ããïŒ
A7:
EOFïŒEnd Of FileïŒã¯ããã¡ã€ã«ã®çµç«¯ã«å°éããããšã瀺ãç¹å¥ãªå€ã§ãã以äžã®é¢æ°ã§EOFã確èªã§ããŸãïŒ
fgetc
fgets
fscanf
EOFã確èªããäŸ:
int c;
while ((c = fgetc(file)) != EOF) {
putchar(c);
}
泚æ:
EOFã¯éåžž-1
ãšããŠå®çŸ©ãããŠããŸãããããã°ã©ã å
ã§ã¯EOF
ã䜿ã£ãŠæ¯èŒããã®ãæšå¥šãããŸãã
Q8: Cèšèªã§ãã¡ã€ã«æäœãå¹ççã«åŠã¶ã«ã¯ã©ãããã°è¯ãã§ããïŒ
A8:
- åºç€ããã£ããåŠã¶:
fopen
ãfclose
ãfprintf
ãfscanf
ãšãã£ãåºæ¬çãªé¢æ°ã®äœ¿ãæ¹ãç¿åŸããŸãããã - å®è·µçãªãããžã§ã¯ã:
ãã°ãã¡ã€ã«ã®ä¿åãç°¡åãªããŒã¿ããŒã¹ã®äœæãªã©ãå°ããªãããžã§ã¯ãã«åãçµãããšã§ç解ãæ·±ãŸããŸãã
ãŸãšã
- FAQã»ã¯ã·ã§ã³ã§ã¯ãCèšèªã®ãã¡ã€ã«æäœã«é¢ãããããã質åãç¶²çŸ çã«è§£èª¬ããŸããã
- åºæ¬æäœãããšã©ãŒåŠçãŸã§ãå®è·µã§åœ¹ç«ã€ç¥èãç¿åŸããŠãã ããã
- äžæç¹ãããã°ããŸãããã¥ã¡ã³ãããªãã¡ã¬ã³ã¹ãåç §ããŸãããã
10. ãŸãšã
ãã®èšäºã§ã¯ãCèšèªã«ããããã¡ã€ã«æäœã«ã€ããŠãåºç€ããå¿çšãŸã§ãäœç³»çã«è§£èª¬ããŸããããã¡ã€ã«æäœã¯ãããã°ã©ã ãå€éšããŒã¿ãšããåãããäžã§æ¬ ãããªãæè¡ã§ãããå¹ åºãçšéã§æŽ»çšã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãèšäºå šäœã®èŠç¹ãæ¯ãè¿ãã次ã®ã¹ãããã«åããã¢ããã€ã¹ã玹ä»ããŸãã
éèŠãªãã€ã³ãã®æ¯ãè¿ã
1. åºæ¬æŠå¿µ
- ãã¡ã€ã«ã¯ããã¹ã圢åŒãšãã€ããªåœ¢åŒã«åé¡ãããããããçšéãç°ãªããŸãã
- Cèšèªã§ãã¡ã€ã«æäœãè¡ãéã¯ã
<stdio.h>
ããããŒãã¡ã€ã«ã䜿çšããŸãã
2. ãã¡ã€ã«æäœã®åºæ¬
fopen
é¢æ°ã§ãã¡ã€ã«ãéããé©åãªã¢ãŒãïŒäŸ:"r"
,"w"
ïŒãéžæããŸãã- ãã¡ã€ã«ãéããåŸã¯ãå¿
ã
fclose
é¢æ°ã§éããå¿ èŠããããŸãã
3. æžã蟌ã¿ãšèªã¿åã
- æžã蟌ã¿ã§ã¯ã
fprintf
ãfputs
ãªã©ã䜿çšããŠããŒã¿ãä¿åããŸãã - èªã¿åãã§ã¯ã
fscanf
ãfgets
ã䜿ãããã¡ã€ã«ããããŒã¿ãååŸããŸãã
4. ãã€ããªãã¡ã€ã«æäœ
- ãã€ããªãã¡ã€ã«ã§ã¯ã
fread
ãšfwrite
ãçšããŠããŒã¿ãå¹ççã«èªã¿æžãããŸãã - æ§é äœãä¿åã»èªã¿åãããšã§ãè€éãªããŒã¿æ§é ãæ±ãããšãã§ããŸãã
5. ãšã©ãŒãã³ããªã³ã°
- ãã¡ã€ã«æäœäžã«ãšã©ãŒãçºçããå¯èœæ§ãèæ
®ãã
ferror
ãfeof
ã䜿ã£ããšã©ãŒåŠçãè¿œå ããŸãããã
6. å¿çšçãªæäœ
- è€æ°ãã¡ã€ã«ã®åææäœãäžæãã¡ã€ã«ã®å©çšããã¡ã€ã«ã®ãªããŒã ãåé€ãšãã£ãå¿çšãã¯ããã¯ã䜿ãããªãããšã§ãããå®è·µçãªããã°ã©ã ãæ§ç¯ã§ããŸãã
次ã®ã¹ããããžã®ã¢ããã€ã¹
Cèšèªã®ãã¡ã€ã«æäœã®åºç€ãç¿åŸããåŸã¯ã以äžã®ã¹ãããã«ææŠããŠã¿ãŸãããã
- CSVãJSONãã¡ã€ã«ã®æäœ
- ãã¡ã€ã«åœ¢åŒã«å¿ããããŒãµãäœæããããŒã¿ã®èªã¿æžããå®è£ ããŸãã
- äŸ: åŠçã®æ瞟ããŒã¿ãCSVãã¡ã€ã«ã«ä¿åããèªã¿åã£ãŠåæããã
- ãšã©ãŒãã³ããªã³ã°ã®åŒ·å
- ãã¡ã€ã«æäœæã®ãšã©ãŒãèšé²ãããã°ã·ã¹ãã ãæ§ç¯ããããã°ã©ã ã®ä¿¡é Œæ§ãåäžãããŸãã
- ãã«ãã¹ã¬ããç°å¢ã§ã®ãã¡ã€ã«æäœ
- è€æ°ã®ã¹ã¬ããã§ãã¡ã€ã«ãå®å šã«æäœããæ¹æ³ãåŠã³ãŸãã
- ãã¡ã€ã«æäœãçšãããããžã§ã¯ãéçº
- å®è·µçãªããã°ã©ã ãéçºãããã¡ã€ã«æäœã®ã¹ãã«ãæ·±ããŸãã
- äŸ: ç°¡æããŒã¿ããŒã¹ãèšå®ç®¡çããŒã«ããã°åéããã°ã©ã ãªã©ã
æåŸã«
Cèšèªã§ã®ãã¡ã€ã«æäœã¯ãããã°ã©ã ã®å®çšæ§ãé«ããéèŠãªã¹ãã«ã§ããæåã¯é£ããæãããããããŸããããåºæ¬ãæŒãããŠå®è·µãéããããšã§ã確å®ã«ç解ãæ·±ããããšãã§ããŸãããã®èšäºãéããŠããã¡ã€ã«æäœã«èªä¿¡ãæãŠãããã«ãªããããã«è€éãªãããžã§ã¯ãã«ææŠããããã®åºç€ãç¯ããããšãé¡ã£ãŠããŸãã