I/O는 C 언어의 입출력 기능을 말합니다.
고수준 I/O
- 사람이 쉽게 이해할 수 있습니다.
- 장점은 휴대성입니다.
저수준 I/O
- 컴퓨터로 쉽게 이해할 수 있습니다.
- 장점은 실행 시간이 짧다는 것입니다.
- 단점은 휴대성이 없다는 것입니다.
고수준 I/O 기능
상위 레벨 입력 - 출력(I/O) 기능은 아래에 설명되어 있습니다 -
| 함수 | 설명 |
|---|---|
| fprintf( ) | 파일에 데이터 쓰기 |
| fscanf( ) | 파일에서 데이터 읽기 |
| putc()/fputc() | 파일에 문자 쓰기 |
| getc() /fgetc() | 파일에서 문자 읽기 |
| 퍼트( ) | 파일에 숫자 쓰기 |
| getw( ) | 파일에서 숫자 읽기 |
| 출력( ) | 파일에 문자열 쓰기 |
| fget( ) | 파일에서 문자열 읽기 |
| fread() | 파일에서 전체 레코드 읽기 |
| fwrite() | 전체 레코드를 파일에 쓰기 |
fprintf( ) 및 fscanf( ) 함수
- fprintf( )
구문은 다음과 같습니다 -
fprintf (file pointer, " control string”, variable list)
예를 들어,
FILE *fp; fprintf (fp, "%d%c”, a,b);
- fscanf( )
구문은 다음과 같습니다 -
fscanf(file pointer, "control string”, & variable list);
예를 들어,
FILE *fp; fscanf (fp, "%d%c”, &a,&b);
putc( ) 및 getc( ) 함수
- putc( )
파일에 문자를 쓸 때 사용합니다.
구문은 다음과 같습니다 -
putc (char ch, FILE *fp);
예를 들어,
FILE *fp; char ch; putc(ch, fp);
- c( ) 가져오기
파일에서 문자를 읽을 때 사용합니다.
구문은 다음과 같습니다 -
char getc (FILE *fp);
예를 들어,
FILE *fp; char ch; ch = getc(fp);

putw( ) 및 getw( ) 함수
- putw( )
파일에 숫자를 쓸 때 사용합니다.
구문은 다음과 같습니다 -
putw (int num, FILE *fp);
예를 들어,
FILE *fp; int num; putw(num, fp);
- getw( )
파일에서 숫자를 읽을 때 사용합니다.
구문은 다음과 같습니다 -
int getw (FILE *fp);
예를 들어,
FILE *fp; int num; num = getw(fp);

fput c( ) 및 fgetc( ) 함수
- fputc( )
파일에 문자를 쓸 때 사용합니다.
구문은 다음과 같습니다 -
fputc (char ch, FILE *fp);
예를 들어,
FILE *fp; char ch; fputc (ch.fp);
- fgetc( )
파일에서 문자를 읽을 때 사용합니다.
구문은 다음과 같습니다 -
fputc (char ch, FILE *fp);
예를 들어,
FILE *fp; char ch; ch = fgetc(fp);
fgets( ) 및 fputs( ) 함수
- fget( )
파일에서 문자열을 읽는 데 사용됩니다.
구문은 다음과 같습니다.
fgets (string variable, No. of characters, File pointer);
예를 들어,
FILE *fp; char str [30]; fgets (str,30,fp);
- 풋( )
파일에 문자열을 쓰는 데 사용됩니다.
구문은 다음과 같습니다 -
fputs (string variable, file pointer);
예를 들어,
FILE *fp; char str[30]; fputs (str,fp);

fread( ) 및 fwrite( ) 함수
- 후드( )
한 번에 전체 레코드를 읽는 데 사용됩니다.
구문은 다음과 같습니다 -
fread( & structure variable, size of (structure variable), no of records, file pointer);
예를 들어,
struct emp{
int eno;
char ename [30];
float sal;
} e;
FILE *fp;
fread (&e, sizeof (e), 1, fp); - 쓰기( )
한 번에 전체 레코드를 작성하는 데 사용됩니다.
구문은 다음과 같습니다 -
fwrite( & structure variable , size of structure variable, no of records, file pointer);
예를 들어,
struct emp{
int eno:
char ename [30];
float sal;
} e;
FILE *fp;
fwrite (&e, sizeof(e), 1, fp); 예시 프로그램
다음은 1에서 10까지의 숫자를 저장하고 같은 숫자를 출력하는 C 프로그램입니다 -
//Program for storing no’s from 1 to 10 and print the same
#include<stdio.h>
int main( ){
FILE *fp;
int i;
fp = fopen ("num.txt", "w");
for (i =1; i<= 10; i++){
putw (i, fp);
}
fclose (fp);
fp =fopen ("num.txt", "r");
printf ("file content is");
for (i =1; i<= 10; i++){
i= getw(fp);
printf ("%d",i);
}
fclose (fp);
return 0;
} 출력
위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -
file content is12345678910
다음은 5명의 학생에 대한 세부 정보를 파일에 저장하고 fread( ) 및 fwrite( ) -
를 사용하여 동일한 내용을 인쇄하는 또 다른 C 프로그램입니다.예시
#include<stdio.h>
struct student{
int sno;
char sname [30];
float marks;
char temp;
};
main ( ){
struct student s[60];
int i;
FILE *fp;
fp = fopen ("student1.txt", "w");
for (i=0; i<2; i++){
printf ("enter details of student %d\n", i+1);
printf("student number:");
scanf("%d",&s[i].sno);
scanf("%c",&s[i].temp);
printf("student name:");
gets(s[i].sname);
printf("student marks:");
scanf("%f",&s[i].marks);
fwrite(&s[i], sizeof(s[i]),1,fp);
}
fclose (fp);
fp = fopen ("student1.txt", "r");
for (i=0; i<2; i++){
printf ("details of student %d are\n", i+1);
fread (&s[i], sizeof (s[i]) ,1,fp);
printf("student number = %d\n", s[i]. sno);
printf("student name = %s\n", s[i]. sname);
printf("marks = %f\n", s[i]. marks);
}
fclose(fp);
getch( );
} 출력
위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -
enter details of student 1 student number:1 student name:bhanu student marks:50 enter details of student 2 student number:2 student name:priya student marks:69 details of student 1 are student number = 1 student name = bhanu marks = 50.000000 details of student 2 are student number = 2 student name = priya marks = 69.000000