C 언어 사용 파일 입 출력 데이터-ACM 개선 판(freopen 함수)

7416 단어 C
C 언어 사용 파일 입 출력 데이터:http://www.slyar.com/blog/c-file-input-output.html
수학 과 에서 C 언어 시험 문 제 를 풀 어 주 고 평가 에 Cena 를 사 용 했 습 니 다.그러나 Cena 는 파일 입력/출력 을 사용 해 야 합 니 다.그들 은 할 줄 모 릅 니 다.그래서 저 는 설명 을 써 서 블 로그 에 올 렸 습 니 다.
C 언어의 파일 조작 매개 변수 가 매우 많 기 때문에 나 는 일일이 열거 하지 않 을 것 이다.나 는 문 제 를 풀 때 사용 해 야 할 몇 가지 함수 용법 만 말 할 것 이다.
우선 파일 지침 을 정의 해 야 합 니 다.편리 하 게 2 개 를 정의 하 십시오.하 나 는 fp1 을 입력 파일 지침 으로 사용 하고 다른 하 나 는 fp2 를 출력 파일 지침 으로 사용 합 니 다.
FILE *fp1, *fp2;

다음은 fopen()함 수 를 사용 하여 읽 기 전용 r(read)로 입력 파일 slyar.in 을 엽 니 다.
fp1 = fopen("slyar.in","r");

그리고 fopen()함 수 를 사용 하여 쓰기 방식 w(write)로 출력 파일 slyar.out 을 엽 니 다.
fp2 = fopen("slyar.out","w");

다음 일 은'화면 에서 데 이 터 를 읽 기'를'파일 에서 데 이 터 를 읽 기'로 바 꾸 는 것 입 니 다.이 단 계 는 코드 에 있 는 모든'scanf'를'fscanf'로 바 꾸 고 매개 변수 목록 의 첫 번 째 에 파일 포인터 fp1 을 입력 하면 입력 파일 에서 내용 을 읽 을 수 있 습 니 다.
fscanf(fp1, "%d", &temp);

마찬가지 로'화면 에 데 이 터 를 출력 합 니 다'를'파일 에 데 이 터 를 출력 합 니 다'로 바 꾸 는 것 도 코드 에 있 는 모든'printf'를'fprintf'로 바 꾸 고 매개 변수 목록 의 첫 번 째 에 출력 파일 포인터 fp2 를 추가 하면 데 이 터 를 출력 파일 에 기록 할 수 있 습 니 다.
fprintf(fp2, "%d", temp);

마지막 단 계 는 fclose()함 수 를 사용 하여 입력 파일 과 출력 파일 을 닫 습 니 다.
fclose(fp1);
fclose(fp2);

자,여러분 은 파일 에서 데 이 터 를 간단하게 입력 하고 출력 하 는 법 을 배 웠 습 니까?
코드 모드 추가:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include 
 
int main()
{
	FILE *fp1, *fp2;
	fp1 = fopen("slyar.in","r");
	fp2 = fopen("slyar.out","w");
 
	/*         , scanf printf         */
 
	fclose(fp1);
	fclose(fp2);
	return 0;
}

2.C 언어 파일 입 출력 ACM 개선 판(freopen 함수):http://www.slyar.com/blog/c-freopen-stdin-stdout.html
어제'C 언어 사용 파일 입 출력 데이터'를 보 냈 는데 가장 일반적인 파일 입 출력 방법 을 사 용 했 습 니 다.Felix 대 우 는 그 후에 더욱 간단 한 개선 방법 을 주 었 습 니 다.ACM 에서 응용 이 넓 고 훌륭 합 니 다.지금 소개 하 겠 습 니 다.
이번에 사 용 된 파일 열기 함 수 는 fopen 이 아니 라 stdio.h 에 포 함 된 또 다른 함수 freopen 입 니 다.
FILE * freopen ( const char * filename, const char * mode, FILE * stream );

[매개 변수 설명]
filename:열 파일 이름
mode:파일 이 열 린 모드 는 fopen 의 모드(r/w)와 같 습 니 다.
stream:파일 포인터,보통 표준 스 트림 파일 사용(stdin/stdout/stderr)
[사용법]
파일 포인터 가 표준 스 트림 파일 을 사용 하기 때문에 파일 포인터 가 정의 되 지 않 을 수 있 습 니 다.
다음은 free open()함 수 를 사용 하여 읽 기 전용 r(read)로 입력 파일 slyar.in 을 엽 니 다.
freopen("slyar.in", "r", stdin);

그리고 freopen()함 수 를 사용 하여 기록 방식 w(write)로 출력 파일 slyar.out 을 엽 니 다.
freopen("slyar.out", "w", stdout);

다음은 free open()함수 의 장점 을 사용 하 는 것 입 니 다.scanf 와 printf 를 수정 하지 않 고 코드 의 원래 모습 을 유지 하면 됩 니 다.freopen()함수 가 표준 흐름 으로 바 뀌 었 기 때문에 앞에서 지정 한 파일 을 가리 키 면 시간 을 절약 할 수 있 습 니 다.좋아요...
마지막 으로 fclose 를 사용 하여 입력 파일 과 출력 파일 을 닫 으 면 됩 니 다.
fclose(stdin);
fclose(stdout);

핸들 을 복원 하려 면 표준 콘 솔 장치 파일 을 다시 열 수 있 습 니 다.다만 이 장치 파일 의 이름 은 운영 체제 와 관련 이 있 습 니 다.
DOS/Win:
freopen("CON", "r", stdin);

Linux:
freopen("/dev/console", "r", stdin);

코드 모드 도 추가 합 니 다:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include 
 
int main()
{
	freopen("slyar.in", "r", stdin);
	freopen("slyar.out", "w", stdout);
 
	/*         ,        */
 
	fclose(stdin);
	fclose(stdout);
	return 0;
}

PS.방금 발견 한 문 제 는 C-free 로 파일 작업 이 포 함 된 원본 코드 를 컴 파일 할 때 fopen 이나 free open 을 모든 변수 정의 아래 에 두 어야 한 다 는 것 입 니 다.그렇지 않 으 면 컴 파일 오류 가 발생 합 니 다.멘 붕.

좋은 웹페이지 즐겨찾기