1. fprintf를 이용한 메모장 입력
#include <stdio.h>
int main(){
int age;
char name[20];
int i;
FILE *pt = fopen("abc.txt", "wt");
for(i=0; i<3; i++){
scanf("%d %s", &age, name); // age와 name 변수의 값을 입력받고
fprintf(pt, "%d %s\n", age, name); // 변수값을 메모장에 넣는다.
}
fclose(pt);
return 0;
}
// 답 20 kim -> 메모장 확인 20 kim
2. fscanf를 이용하여 읽어오기
#include <stdio.h>
int main(){
int age;
char name[20];
int ch;
FILE *pt = fopen("abc.txt", "rt");
while(1){
ch = fscanf(pt, "%d %s", &age, name);
if(ch == EOF){ // fscanf는 끝에 도달하면 EOF를 반환한다.
break;
}
printf("%d %s \n", age, name);
}
fclose(pt);
return 0;
}
// 답 20 kim
// fscanf는 띄어쓰기 또는 엔터가 나오기 전까지 읽는다.
// fscanf는 파일 끝에 EOF를 반환한다.
while(fscanf(pt, "%d %s", &age, name) != EOF){
printf("%d %s \n", age, name);
}
이게 더 간단해보인다.
3. 파일 끝을 확인하고 싶다면?
feof라는 함수가 있다.
feof(pt) 를 입력하자. 지금 pt 위치에는 스트림이 들어간다.
pt가 EOF라면 0이 아닌 값을 반환하고 끝이 아니라면 0을 반환한다. (예를 들면 000000...끝에서 1됨)
그러면 끝을 확인하려면?
if(feof(pt) != 0){
puts("파일의 끝입니다.");
else{
puts("파일의 끝이 아닙니다.");
}
// 이런 식으로 작성할 수 있다.
'C' 카테고리의 다른 글
[C] 조건부 컴파일 #if #else #elif #endif #ifdef #ifndef (0) | 2019.12.03 |
---|---|
[C] 파일 위치지시자 fseek (0) | 2019.12.03 |
[C] 파일입출력 fgetc fgets (0) | 2019.12.03 |
[C] 파일입출력 fputc fputs (0) | 2019.12.03 |
[C] 포인터 배열과 배열 포인터 (0) | 2019.12.03 |