I/O หมายถึงฟังก์ชันอินพุต - เอาต์พุตในภาษา C
I/O ระดับสูง
- สิ่งเหล่านี้เข้าใจได้ง่ายโดยมนุษย์
- ข้อดีคือพกพาสะดวก
I/O ระดับต่ำ
- คอมพิวเตอร์เข้าใจสิ่งเหล่านี้ได้ง่าย
- ข้อดีคือใช้เวลาดำเนินการน้อยกว่า
- ข้อเสียคือ ไม่สามารถพกพาได้
ฟังก์ชัน I/O ระดับสูง
ฟังก์ชันอินพุต - เอาท์พุต (I/O) ระดับสูงมีคำอธิบายด้านล่าง -
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| fprintf ( ) | เขียนข้อมูลลงในไฟล์ |
| fscanf ( ) | อ่านข้อมูลจากไฟล์ |
| putc ( )/ fputc() | เขียนอักขระลงในไฟล์ |
| getc ( ) /fgetc() | อ่านอักขระจากไฟล์ |
| putw ( ) | เขียนตัวเลขลงในไฟล์ |
| getw ( ) | อ่านตัวเลขจากไฟล์ |
| fputs ( ) | เขียนสตริงลงในไฟล์ |
| fgets ( ) | อ่านสตริงจากไฟล์ |
| 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 ( )
- fgets ( )
ใช้สำหรับอ่านสตริงจากไฟล์
ไวยากรณ์มีดังนี้
fgets (string variable, No. of characters, File pointer);
ตัวอย่างเช่น
FILE *fp; char str [30]; fgets (str,30,fp);
- fputs ( )
ใช้สำหรับเขียนสตริงลงในไฟล์
ไวยากรณ์มีดังนี้ −
fputs (string variable, file pointer);
ตัวอย่างเช่น
FILE *fp; char str[30]; fputs (str,fp);

ฟังก์ชัน fread ( ) และ fwrite ( )
- fread ( )
ใช้สำหรับอ่านบันทึกทั้งหมดพร้อมกัน
ไวยากรณ์มีดังนี้ −
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); ตัวอย่างโปรแกรม
ต่อไปนี้เป็นโปรแกรม C สำหรับเก็บตัวเลขตั้งแต่ 1 ถึง 10 และพิมพ์เหมือนกัน -
//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
รับด้านล่างเป็นโปรแกรม C อื่นสำหรับการจัดเก็บรายละเอียดของนักเรียน 5 คนเป็นไฟล์และพิมพ์เหมือนกันโดยใช้ fread ( ) และ fwrite ( ) -
ตัวอย่าง
#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