표준 입력 (stdin, Standard Input) : 키보드 입력
표준 출력 (stdout, Standard Output) : 모니터 출력
printf 와 scanf는 앞에서 많이 사용했으니 생략
모든 데이터 형식의 입출력
문자열의 입출력
#include<stdio.h>
void main(){
char s[20];
printf("문자열을 입력 :" );
gets(s);
puts(s);
}
사용자가 키보드로 Enter를 누를 때까지 입력한 것을 버퍼에 모두 저장해 놓고 그 중에서 한 문자만 꺼냄
모니터에 문자 하나를 출력
#include<stdio.h>
void main(){
char ch;
printf("문자열을 입력하세요 : ");
ch = getchar();
putchar(ch);
ch = getchar();
putchar(ch);
ch = getchar();
putchar(ch);
}
첫 번째 출력이 AB 를 출력하고 한줄이 개행된 이유는
버퍼에서 처음에 A를 읽고 출력하고 B를 읽고 출력한 다음 엔터(\n)를 입력받아 개행된 것이다.
FILE *변수이름;
변수 이름 : fopen("파일 이름","열기 모드");
fclose(파일 포인터);
파일로 부터 값을 입력 받을 때 사용하며, 파일 포인터에 지정된 파일에서 문자열을 읽어서 문자 배열에 대입함. 문자열의 최대 길이는 '읽을 최대 문자수 -1'
fgets(문자 배열, 읽을 최대 문자수, 파일 포인터);
메모장 실행 -> 'File Read Sample' 문구 넣음
#include<stdio.h>
void main(){
char s[20];
FILE *rfp;
rfp = fopen("c:\\c_study\\data1.txt", "r");
fgets(s,20,rfp);
printf("파일에서 읽은 문자열 : ");
puts(s);
fclose(rfp);
}
#include<stdio.h>
void main(){
char str[200];
FILE *rfp;
rfp = fopen("c:\\windows\\win.ini","r");
for(;;){
fgets(str, 200, rfp);
if(feof(rfp))
break;
printf("%s", str);
}
fclose(rfp);
}
파일 포인터를 사용하는 것을 제외하고 scanf()와 사용법이 동일하다
fscanf(파일포인터, "서식", 입력할 매개변수들 ...);
#include<stdio.h>
void main(){
FILE *rfp;
int hap = 0;
int in, i;
rfp = fopen("c:\\c_study\\data2.txt", "r");
for(i = 0; i < 5; i++){
fscanf(rfp,"%d",&in);
hap = hap + in;
}
printf("합계 ==> %d\n", hap);
fclose(rfp);
}
- 파일에서 데이터를 읽어와 화면에 출력하는 대신 파일에 내용을 씀
- 단, 파일 포인터에 지정된 파일에 문자열을 출력
fputs(출력할 데이터, 파일 포인터);
#include<stdio.h>
void main(){
char s[20];
FILE *wfp;
wfp = fopen("c:\\c_study\\data3.txt","w");
printf("문자열을 읿력(최대 19자) : ");
gets(s);
fputs(s, wfp);
fclose(wfp);
}
아래와 같이 gets로 문자열을 입력 받고
입력 받은 문자열을 fputs를 이용해 메모장에 출력
#include<stdio.h>
void main(){
char str[200];
FILE *rfp;
FILE *wfp;
rfp = fopen("c:\\windows\\win.ini","r");
wfp = fopen("c:\\c_study\\data5.txt","w");
for(;;){
fgets(str, 200, rfp);
if(feof(rfp))
break;
fputs(str, wfp);
}
fclose(rfp);
fclose(wfp);
}
파일에 숫자를 출력할 때는 서식을 지정할 수 있는 fprintf() 함수를 사용하는 것이 편리하다.
fprintf(파일 포인터, "서식", 출력할 매개변수들....);
#include<stdio.h>
void main(){
FILE *wfp;
int hap = 0;
int in, i;
wfp = fopen("c:\\c_study\\data6.txt");
for(i = 0; i < 5; i++){
printf("숫자 %d : ", i + 1);
scanf("%d", &in);
hap += in;
}
fprintf(wfp, "합계 ==> : %d\n", hap);
fclose(wfp);
}
#include<stdio.h>
void main(){
FILE *wfp; // 파일 포인터 변수
wfp = fopen("c:\\c_study\\gugu.txt","w"); 포인터 변수에 fopen을 통해 파일을 열고 물리경로를 대입
int i, j; // 구구단에 사용될 변수
for(i = 0; i < 10; i++){
//fprintf를 통해 서식을 지정해 파일에 입력
fprintf(wfp,"#제%d단#\t\t",i);
}
fputs("\n\n",wfp)
for(i = 1; i < 10; i++){
for(j = 2; j < 10; j++){
fprintf(wfp,"%d X %d = %d",j, i,, j*i);
}
fprintf(wfp,"\n");
}
// 파일을 닫음
fclose(wfp);
}