Laboratory 2
This presentation is the property of its rightful owner.
Sponsored Links
1 / 49

Laboratory 2 PowerPoint PPT Presentation


  • 51 Views
  • Uploaded on
  • Presentation posted in: General

Laboratory 2. File Access. เกริ่นนำ. การเขียนโปรแกรมของเราที่ผ่านมาจะนำข้อมูลเข้าผ่านทางอุปกรณ์รับข้อมูลมาตรฐานหรือคีย์บอร์ดนั่นเอง และส่งผลจากการประมวลผลใดๆ ออกทางอุปกรณ์แสดงผลมาตรฐานหรือหน้าจอคอมพิวเตอร์

Download Presentation

Laboratory 2

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Laboratory 2

Laboratory 2

File Access


Laboratory 2

เกริ่นนำ

  • การเขียนโปรแกรมของเราที่ผ่านมาจะนำข้อมูลเข้าผ่านทางอุปกรณ์รับข้อมูลมาตรฐานหรือคีย์บอร์ดนั่นเอง และส่งผลจากการประมวลผลใดๆ ออกทางอุปกรณ์แสดงผลมาตรฐานหรือหน้าจอคอมพิวเตอร์

  • อีกทางของรับข้อมูลและแสดงผลข้อมูล คือเราสามารถนำเข้าข้อมูลที่เก็บอยู่ในไฟล์ และแสดงผลของการดำเนินงานเก็บไว้ในไฟล์

  • ซึ่งบทนี้เราจะเรียนคำสั่งภาษาซีเกี่ยวกับการติดต่อกับไฟล์


Laboratory 2

หลักการประมวลผลกับไฟล์

C programming

Operating System

Buffer

File pointer

ไฟล์ที่เก็บในฮาร์ดดิสก์


Laboratory 2

บัฟเฟอร์

  • บัฟเฟอร์คือพื้นที่ในหน่วยความจำหลัก (memory)ของเครื่องคอมพิวเตอร์ ซึ่งเตรียมไว้สำหรับประมวลผลกับไฟล์ ถ้าทำการประมวลผลกับหลายๆ ไฟล์ แต่ละไฟล์ก็จะมีบัฟเฟอร์เฉพาะสำหรับไฟล์นั้น

ตัวอย่าง

ถ้าเราประมวลผลกับไฟล์ชื่อ A, Bและ Cพื้นที่ในหน่วยความจำจะถูกกำหนดแยกเอาไว้ 3ส่วนด้วยกันเพื่อให้เป็นบัฟเฟอร์ของไฟล์ A, Bและ C


Laboratory 2

โครงสร้างของไฟล์ในภาษาซี

  • จะเก็บข้อมูลในลักษณะเรียงต่อกันตั้งแต่ต้นจนจบไฟล์ไม่มีการแบ่งช่วงของข้อมูล ดังนั้นการที่จะเลือกระบุข้อมูลใดๆ ก็ตามภายในไฟล์ ต้องทราบตำแหน่งของข้อมูล ซึ่งตำแหน่งของข้อมูลภายในไฟล์สามารถทำได้โดยใช้ตัวชี้ตำแหน่งไฟล์ (file pointer)

  • ตัวชี้ตำแหน่งไฟล์จะเป็นตัวบอกตำแหน่งภายในไฟล์ โดยจะเป็นตัวบอกว่าขณะนั้นทำการประมวลผลอยู่ ณ ตำแหน่งใด ภายในไฟล์ ทำให้เราสามารถกำหนดได้ว่าจะอ่านหรือเขียนข้อมูลโดยเริ่มต้นจากจุดใดและไปสิ้นสุดที่ตำแหน่งใดในไฟล์


Laboratory 2

ชนิดของไฟล์

  • เท็กซ์ไฟล์(Text File)เป็นไฟล์ที่เก็บข้อมูลในรูปแบบของรหัส asciiซึ่งก็คือเก็บเป็นตัวอักษร ทำให้เราสามารถอ่านข้อมูลในไฟล์ประเภทนี้ได้รู้เรื่อง โดยเท็กซ์ไฟล์จะมีการเปลี่ยนรหัสการขึ้นบรรทัดใหม่ ‘\n’เป็น Carriage returnหรือ Line feedตัวอย่างไฟล์ .c, .txt, .batหรือ .dat

  • ไบนารีไฟล์ (Binary File)เป็นไฟล์ที่เก็บข้อมูลในรูปแบบของเลขฐานสองซึ่งเป็นระบบเลขที่เครื่องคอมพิวเตอร์ใช้งาน ดังนั้นเราจึงไม่สามารถอ่านข้อมูลในไฟล์ประเภทนี้ได้รู้เรื่อง ตัวอย่างไฟล์ .exe, .com หรือ .obj


File pointer

ตัวชี้ตำแหน่งไฟล์ (file pointer)

  • เมื่อทำการเปิดไฟล์ขึ้นมาแล้วตัวชี้ตำแหน่งไฟล์จะถูกสร้างขึ้นเพื่อชี้ตำแหน่งภายในไฟล์นั้น

  • คำสั่งที่ดำเนินการกับไฟล์จะต้องใช้ตัวชี้ตำแหน่งไฟล์ในการอ้างอิงจุดที่จะดำเนินการ อาทิ คำสั่งเขียน หรือ คำสั่งอ่าน


Laboratory 2

การสร้างตัวแปรพอยน์เตอร์ชนิดไฟล์

  • เราจำต้องมีตัวแปรพอยน์เตอร์ชนิดไฟล์เพื่อมารับค่าตัวชี้ตำแหน่งไฟล์ที่เกิดขึ้นเมื่อทำการเปิดไฟล์

  • การกำหนดตัวแปรพอยน์เตอร์ชนิดไฟล์

FILE *ชื่อตัวแปรพอยน์เตอร์ชนิดไฟล์

ตัวอย่าง

FILE *fp;


Laboratory 2

การเปิดไฟล์

  • ในการดำเนินงานใดๆ กับไฟล์จะต้องกระทำสิ่งแรกก่อนคือ การเปิดไฟล์

  • โดยตัวชี้ตำแหน่งไฟล์จะชี้ไปที่จุดเริ่มต้นของไฟล์ที่ทำการเปิดนั้น เมื่ออ่านหรือเขียนข้อมูลจากไฟล์ตัวชี้ตำแหน่งไฟล์ก็จะเลื่อนไปเรื่อยๆ ตามจำนวนของข้อมูล

  • การเปิดไฟล์เราใช้ฟังก์ชัน fopen( )ซึ่งเป็นไลบรารีฟังก์ชันที่อยู่ในไฟล์ stdlib.h


Laboratory 2

การเปิดไฟล์

  • รูปแบบการใช้คำสั่งการเปิดไฟล์

ชื่อตัวแปรพอยน์เตอร์ชนิดไฟล์ = fopen(“ชื่อไฟล์”, “mode”)

ผลลัพธ์

ถ้าการเปิดไฟล์เป็นผลสำเร็จ สิ่งที่ได้กลับมาก็คือ ตัวชี้ตำแหน่งไฟล์

ถ้าเกิดความผิดพลาด จะส่งค่า NULLกลับออกมาหมายความว่าไม่สามารถเปิดไฟล์นั้นได้


Laboratory 2

โหมดการเปิดไฟล์

รหัสความหมาย

r เปิดเพื่ออ่านไฟล์เก่า

wเปิดเพื่อเขียนไฟล์ใหม่ หรือเขียนทับไฟล์เก่า

aเปิดเพื่อเขียนต่อท้ายข้อมูลสุดท้ายของไฟล์เก่า

r+ เปิดเพื่ออ่านหรือเขียนทับไฟล์เก่า

w+เปิดเพื่ออ่านหรือเขียนทับไฟล์เก่าหรือไฟล์ใหม่

a+เปิดเพื่อเขียนต่อท้ายไฟล์เก่า หรือเขียนไฟล์ใหม่


Info txt

ตัวอย่าง การเขียนคำสั่งเพื่อเปิดเท็กซ์ไฟล์ info.txt

  • ทำการอ่านเท็กซ์ไฟล์ ชื่อ info.txtสำหรับอ่านข้อมูลอย่างเดียว

FILE *fp;

fp = fopen(“info.txt”, “r”);

FILE *pfile;

pfile = fopen(“readme.txt”, “w”);


Laboratory 2

เพิ่มเติม

  • เราสามารถกำหนดโหมดให้ละเอียดกว่านี้ได้โดยระบุชนิดของไฟล์ลงไปด้วย

    • ถ้าเป็นเท็กซ์ไฟล์จะใช้ตัวอักษร t ต่อท้ายไฟล์ เช่น rt, wt, at หรือ r+t, w+t, a+t

    • ถ้าเป็นไบนารีไฟล์จะใช้ตัวอักษร b ต่อท้ายไฟล์ เช่น rb, wb, ab หรือ r+b, w+b, a+b


Laboratory 2

ตัวอย่างการเปิดไฟล์

FILE *fp;

fp = fopen(“abc.txt”, “a”);

fp = fopen(“ex5.obj”, “w”);

fp = fopen(“song.dat”, “r+t”);

fp = fopen(“prog.exe”, “a+b”);

fp = fopen(“ch1.txt”, “w+”);

เปิดเท็กซ์ไฟล์ abc.txtเพื่อเขียนข้อมูลต่อ

เปิดไบนารีไฟล์ ex5.objเพื่อเขียนข้อมูลทับ

เปิดเท็กซ์ไฟล์ song.datเพื่ออ่านข้อมูล

เปิดไบนารีไฟล์ ex5.objเพื่ออ่านและเขียนทับ

เปิดเท็กซ์ไฟล์ ch1.txtเพื่ออ่านและเขียนทับ


Laboratory 2

ตัวอย่างการเปิดไฟล์

อย่างที่ได้กล่าวไว้แล้ว การเปิดไฟล์จะส่งผลลัพธ์กลับออกมาเป็นตัวชี้ไฟล์ แต่ถ้าการเปิดไฟล์ไม่สำเร็จ ค่าที่ส่งกลับมาคือ NULLดังนั้นเราจึงควรตรวจสอบให้แน่ใจว่าทำการเปิดไฟล์สำเร็จก่อนการดำเนินการใดๆ กับไฟล์

#include <stdio.h>

main(){

FILE *fp;

fp = fopen(“box.txt”, “r”);

if (fp == NULL)

{

printf(“Cannot open file\n”);

exit();

}

fclose(fp);

}


Laboratory 2

ความผิดพลาดจากการเปิดไฟล์

  • ไฟล์ที่ต้องการเปิดไม่มีอยู่จริง ในกรณีนี้จะเกิดขึ้นกับโหมดเปิดเพื่ออ่านไฟล์ ส่วนโหมดอื่นๆ จะทำการสร้างไฟล์ใหม่หากไม่พบชื่อไฟล์ที่กำหนด

  • ระบุที่เก็บไฟล์ไม่ถูกต้อง ปรกติแล้วการระบุแต่ชื่อไฟล์เพียงอย่างเดียวจะหมายความว่าไฟล์ที่ระบุจะอยู่ ณ ไดเรกทอรี่ที่ตัวแปลภาษาซี แต่ถ้าเราต้องการเปิดไฟล์ ณ ไดเรกทอรี่อื่นให้ระบุ path เต็มๆ ได้

  • การป้องกันไฟล์อันเกิดจากการให้สิทธิของผู้ดูแลระบบ


Laboratory 2

ตัวอย่างการกำหนดที่อยู่ของไฟล์

FILE *fp;

fp = fopen(“C:/my_c/abc.txt”, “r”);

fp = fopen(“D:/JOBs/info.dat”, “a+”);


Laboratory 2

การปิดไฟล์

  • เมื่อเราได้ทำการเปิดไฟล์แล้ว ควรจะทำการปิดไฟล์ทุกครั้ง เพื่อคืนพื้นที่หน่วยความจำที่ใช้เป็นบัฟเฟอร์ของไฟล์ให้กับเครื่อง นอกจากนี้เมื่อทำการปิดไฟล์ข้อมูลต่างๆ ที่คงค้างในบัฟเฟอร์จะถูกเขียนกลับลงในไฟล์

  • รูปแบบคำสั่ง

    • ถ้าปิดไฟล์สำเร็จจะได้ค่าศูนย์

    • ถ้าเปิดไฟล์ไม่สำเร็จจะได้ค่าไม่เท่ากับศูนย์

fclose(ชื่อตัวชี้ไฟล์)


Laboratory 2

ตัวอย่างการเปิดและปิดไฟล์

#include <stdio.h>

main(){

FILE *fp;

int a;

fp = fopen(“c:/file/song.txt”, “r”);

if (fp == NULL)

{

printf(“Cannot open file\n”);

exit();

}

printf(“Can open file\n”);

a = fclose(fp);

if(!a) {

printf(“Close file\n”);

}

}

Can open file

Close file


Laboratory 2

การอ่านข้อมูลจากไฟล์

  • ข้อมูลภายในไฟล์จะถูกอ่านเริ่มต้นตั้งแต่ต้นไฟล์ โดยมีตัวชี้ตำแหน่งไฟล์ชี้ไปเรื่อยๆ จนจบไฟล์

  • เราทำการอ่านข้อมูลของไฟล์จากบัฟเฟอร์ มิใช่จากไฟล์จริงๆ

  • เราจะทำการอ่านไฟล์ที่ทำการเปิดจากโหมด r หรือ r+ เท่านั้น

  • คำสั่งในการอ่านไฟล์ มีหลายคำสั่ง อาทิ getc( ), fgetc( ), fgets( )


Laboratory 2

อ่านข้อมูลทีละอักขระ ด้วย getc( )

  • ฟังก์ชัน getc( ) ใช้ในการอ่านข้อมูลชนิดอักขระจากไฟล์ โดยจะอ่านออกมาทีละ 1 อักขระเท่านั้น

  • รูปแบบการเขียนคำสั่ง

ตัวแปรชนิดอักขระ= getc(ตัวชี้ไฟล์)

ตัวอย่าง

FILE *fp;

char ch;

fp = fopen(“C:/my_c/abc.txt”, “r”);

ch = getc(fp);


Laboratory 2

ICT,

Silpakron U.

ตัวอย่างการใช้ getc( )

#include <stdio.h>

main(){

FILE *fp;

char ch;

fp = fopen(“info.txt”, “r”);

if (fp == NULL)

{

printf(“Cannot open file\n”);

exit();

}

printf(“Can open file\n”);

ch = getc(fp);

printf(“%c”,ch);

fclose(fp);

}

Can open file

I


Laboratory 2

การใช้งานจริงของการอ่านไฟล์

  • ถ้าต้องการอ่านข้อมูลจนจบไฟล์โดยใช้ฟังก์ชัน getc() ต้องมีการวนลูปอ่านทีละตัวอักษรจนหมดไฟล์

  • ในกรณีของเท็กซ์ไฟล์ เรามีอักษรพิเศษเมื่อตัวชี้ไฟล์ชี้ไปถึงจุดสิ้นสุดไฟล์ คือ EOF เพื่อบ่งบอกว่าจบไฟล์ เราสามารถอ่านอักขระมีทีละอักขระแล้วมาเปรียบเทียบว่าเป็น EOF หรือไม่ ถ้าอักษรนั้นเท่ากับ EOF ก็แสดงว่าจบไฟล์นี้แล้ว


Laboratory 2

ICT,

Silpakron U.

ตัวอย่างการใช้ getc( )

#include <stdio.h>

main(){

FILE *fp;

char ch;

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

printf(“Can open file\n”);

ch = getc(fp);

while (ch != EOF){

printf(“%c”,ch);

ch = getc(fp);

}

fclose(fp);

}

Can open file

ICT,

Silpakorn U.


End of file

การหาจุดสิ้นสุดไฟล์ (End of File)

  • เท็กซ์ไฟล์ เมื่ออ่านข้อมูลจนจบไฟล์แล้วจะให้ค่า EOF ออกมาเพื่อบอกว่าจุดสิ้นสุดไฟล์

  • ไบนารีไฟล์ เมื่ออ่านข้อมูลจนจบไฟล์ก็ไม่ให้ค่า EOF ออกมาเหมือนเท็กซ์ไฟล์

  • การตรวจสอบจุดจบของไบนารีไฟล์ใช้ฟังก์ชัน feof()

  • ฟังก์ชัน feof()สามารถใช้ได้ทั้งเท็กซ์ไฟล์และไบนารีไฟล์


Laboratory 2

ฟังก์ชัน feof()

  • เป็นฟังก์ชันเพื่อใช้ตรวจสอบจุดสิ้นสุดไฟล์ โดยสามารถใช้ได้ทั้งเท็กซ์ไฟล์และไบนารีไฟล์

  • รูปแบบการเขียนคำสั่ง

    • ถ้ายังไม่จบไฟล์ค่าที่ได้จากฟังก์ชันจะเป็นศูนย์ หรือเท็จ

    • ถ้าจบไฟล์ค่าที่ได้จากฟังก์ชันจะไม่เท่ากับศูนย์ หรือจริง

ตัวแปรตัวเลข= feof(ตัวชี้ไฟล์)

if ( !feof(ตัวชี้ไฟล์) ) { . . . }


Laboratory 2

ICT,

Silpakron U.

ตัวอย่างการใช้ feof( )

#include <stdio.h>

main(){

FILE *fp;

char ch;

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

printf(“Can open file\n”);

while (!feof(fp)){

printf(“%c”,ch);

ch = getc(fp);

}

fclose(fp);

}

Can open file

ICT,

Silpakorn U.


Fgetc

อ่านข้อมูลทีละอักขระ ด้วย fgetc( )

  • ฟังก์ชัน fgetc( )ใช้ในการอ่านข้อมูลชนิดอักขระจากไฟล์ เช่นเดียวกับฟังก์ชัน getc( )

  • รูปแบบการเขียนคำสั่ง

ตัวแปรชนิดอักขระ= fgetc(ตัวชี้ไฟล์)

ตัวอย่าง

FILE *fp;

char ch;

fp = fopen(“C:/my_c/abc.txt”, “r”);

ch = fgetc(fp);


Fgetc feof

ICT,

Silpakron U.

ตัวอย่างการใช้ fgetc() และ feof()

#include <stdio.h>

main(){

FILE *fp;

char ch;

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

printf(“Can open file\n”);

while (!feof(fp)){

printf(“%c”,ch);

ch = fgetc(fp);

}

fclose(fp);

}

Can open file

ICT,

Silpakorn U.


Fgets

อ่านข้อมูลทีละข้อความด้วย fgets()

  • ฟังก์ชัน fgets() ใช้ในกรณีที่ต้องการอ่านข้อมูลจากไฟล์ออกมาต่อเนื่องกันเป็นข้อความ โดยสามารถกำหนดความยาวของข้อความได้

  • รูปแบบของการเขียนคำสั่ง

fgets(ตัวแปรชนิดอักขระ, จำนวนตัวอักษร, ตัวชี้ไฟล์)

หมายเหตุ จำนวนตัวอักษรนี้จะถูกลบออก 1 ตัวอักษรเพื่อใส่ตัวอักษรจบข้อความ ‘\0’


Fgets1

Silpakron U.

ICT Petchaburi

ตัวอย่างการใช้ fgets( )

#include <stdio.h>

main(){

FILE *fp;

char ch[50];

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

printf(“Can open file\n”);

fgets(ch,8,fp);

fclose(fp);

printf(“%s”,ch);

}

Can open file

Silpakr


Fgets2

Silpakron U.

ICT Petchaburi

ตัวอย่างการใช้ fgets( )

#include <stdio.h>

#define MAX 100;

main(){

FILE *fp;

char ch[MAX];

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

printf(“Can open file\n”);

fgets(ch,MAX,fp);

fclose(fp);

printf(“%s”,ch);

}

Can open file

Silpakron U.


Fgets feof

Silpakron U.

ICT Petchaburi

ตัวอย่างการใช้ fgets() และ feof()

#include <stdio.h>

#define MAX 100;

main(){

FILE *fp;

char ch[MAX];

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

printf(“Can open file\n”);

while(!feof(fp)){

fgets(ch,MAX,fp);

printf(“%s”,ch);

}

fclose(fp);

}

Can open file

Silpakron U.

ICT Petchaburi


Fscanf

อ่านข้อมูลด้วย fscanf()

  • เราสามารถอ่านข้อมูลจากไฟล์เป็นข้อมูลชนิดอื่นๆ ได้ นอกเหนือจากตัวอักษรหรือข้อความ เช่นข้อมูลตัวเลข เป็นต้น

  • รูปแบบการเขียนคำสั่ง

fscanf(ตัวชี้ไฟล์, “รูปแบบ”, &ตัวแปร)

หมายเหตุ “รูปแบบ” จะมีลักษณะคล้ายกับของคำสั่ง scanf


Laboratory 2

Silpakron U.

ICT Petchaburi

การอ่านข้อมูลชนิดข้อความจากไฟล์

#include <stdio.h>

main(){

FILE *fp;

char str[20];

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

while(!feof(fp)){

fscanf(fp, “%s”,str);

printf(“%s\n”,str);

}

fclose(fp);

}

Silpakron

U.

ICT

Petchaburi


Laboratory 2

Silpakron U.

ICT Petchaburi

การอ่านข้อมูลชนิดอักขระจากไฟล์

#include <stdio.h>

main(){

FILE *fp;

char ch;

int i;

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

for (i=0;i<5;i++){

fscanf(fp, “%c”,&ch);

printf(“%c\n”,ch);

}

fclose(fp);

}

S

i

l

p


Laboratory 2

11 3 2002

30 5 2003

การอ่านข้อมูลชนิดตัวเลขจากไฟล์

#include <stdio.h>

main(){

FILE *fp;

int day,month,year;

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

fscanf(fp, “%d %d”,&day,&month);

printf(“%d\n”,day);

printf(“%d\n”,month);

fclose(fp);

}

11

3


Fread

อ่านข้อมูลด้วย fread()

  • ฟังก์ชัน fread ใช้อ่านข้อมูลเป็นเรคคอร์ดหรือเป็นชุด ซึ่งขนาดของเรคคอร์ดหรือชุดข้อมูลเราเป็นผู้กำหนดขึ้นเองในหน่วยไบต

  • รูปแบบการเขียนคำสั่ง

fread(ptr, size, number, fp)

ptr คือค่าตำแหน่งในหน่วยความจำ ซึ่งจะนำข้อมูลที่อ่านได้มาเก็บไว้

size คือขนาดของเรคคอร์ดหรือชุดข้อมูล โดยมีหน่วยเป็นไบต์

number คือจำนวนเร็คคอร์ดหรือชุดข้อมูลที่จะอ่าน

fp คือตัวชี้ตำแหน่งไฟล์ที่ต้องการอ่าน


Fread1

11 3 2002

30 5 2003

ตัวอย่างการใช้ fread( )

#include <stdio.h>

main(){

FILE *fp;

char str[30];

fp = fopen(“info.txt”, “r”);

if (fp == NULL){

printf(“Cannot open file\n”);

exit();

}

fread(str, sizeof(str), 1, fp);

printf(“%s\n”,str);

fclose(fp);

}

11 3 2002


Laboratory 2

การเขียนใส่ลงในไฟล์

  • การเขียนหรือบันทึกข้อมูลลงไฟล์ เราจะต้องทำการเปิดไฟล์เพื่อเขียนได้แก่ w, w+, a, a+ และ r+

  • โดยที่ข้อมูลที่เราดำเนินการจะถูกเขียนลงบนบัฟเฟอร์ก่อน ในระหว่างที่เขียนข้อมูล ตัวชี้ไฟล์จะเลื่อนตำแหน่งชี้ไปเรื่อยๆ ตามปริมาณการเขียน เมื่อบัฟเฟอร์เต็มหรือทำการปิดไฟล์ข้อมูลเหล่านั้นจึงจะถูกเขียนลงไปในไฟล์จริงๆ ที่เราอ้างถึงตอนเปิดไฟล์


Laboratory 2

เขียนข้อมูลด้วย putc()

  • เป็นฟังก์ชันที่ใช้สำหรับเขียนข้อมูลประเภทตัวอักขระลงในไฟล์ โดยเขียนลงในไฟล์ครั้งละ 1 ตัวอักษรเท่านั้น

  • รูปแบบการเขียนคำสั่ง

putc( ตัวแปรหรือค่าอักขระ, ตัวชี้ตำแหน่งไฟล์)

ตัวอย่าง

FILE *fp;

char ch = ‘Z’;

fp = fopen(“C:/my_c/abc.txt”, “w”);

putc(‘A’,fp); putc(ch,fp);


Laboratory 2

ABCDEF

ตัวอย่างการใช้ putc( )

#include <stdio.h>

main(){

FILE *fp;

char ch;

fp = fopen(“info.txt”, “w”);

printf(“wait . . .”);

for(ch=‘A’,ch<=‘F’;ch++)

{

putc(ch, fp);

}

printf(“finish my task\n”);

fclose(fp);

}

Wait . . .

Finish my task


Fputc

เขียนข้อมูลด้วย fputc()

  • ใช้เขียนอักขระลงไฟล์เช่นเดียวกับฟังก์ชัน putc()

  • รูปแบบการเขียนคำสั่ง

fputc( ตัวแปรหรือค่าอักขระ, ตัวชี้ตำแหน่งไฟล์)

ตัวอย่าง

FILE *fp;

char ch = ‘Z’;

fp = fopen(“C:/my_c/abc.txt”, “w”);

fputc(‘A’,fp); fputc(ch,fp);


Fputs

เขียนข้อมูลด้วย fputs()

  • เป็นฟังก์ชันใช้สำหรับเขียนข้อความลงในไฟล์

  • รูปแบบการเขียนคำสั่ง

fputs( ตัวแปรข้อความหรือข้อความ, ตัวชี้ตำแหน่งไฟล์)

ตัวอย่าง

FILE *fp;

char str[10] = “sawasdee”;

fp = fopen(“C:/my_c/abc.txt”, “w”);

fputs(“ALOHA ”,fp);

fputs( str, fp );


Fputs1

Name1

Name2

Name3

Name4

Name5

ตัวอย่างการใช้ fputs( )

#include <stdio.h>

main(){

FILE *fp;

int count = 0;

char name[50];

if ((fp = fopen(“name.txt”, “a+”))==NULL){

printf(“can not open file\n”); exit();

}

while(count<5){

printf(“Enter your name:”); gets(name);

fputs(name,fp);

count++;

}

fclose(fp);

}


Fprintf

เขียนข้อมูลด้วย fprintf()

  • นอกเหนือจากข้อมูลที่เป็นข้อความที่เราสามารถเขียนลงไฟล์ได้แล้วเราก็สามารถเขียนข้อมูลชนิดอื่นๆ ลงไฟล์ได้เช่นกัน

  • รูปแบบการเขียนคำสั่ง

fprintf(ตัวชี้ตำแหน่งไฟล์, ตัวควบคุม, ตัวแปรข้อความหรือข้อความ)

หมายเหตุ “ตัวควบคุม” จะมีลักษณะคล้ายกับของคำสั่ง printf


Fprintf1

Name:Awirut Nareerat

School:Wachirawut

Age:10

Sex:M

ตัวอย่างการใช้ fprintf( )

#include <stdio.h>

main(){

FILE *fp;

char name[30]=“Awirut Nareerat”;

int age = 10;

char sex = ‘M’;

fp = fopen(“A.txt”, “a”);

fprintf(fp,“Name:%s\n”,name);

fprintf(fp,“School:Wachirawut\n”);

fprintf(fp,“Age:%d\n”,age);

fprintf(fp,“sex:%c\n”,sex);

fclose(fp);

}


Fwrite

เขียนข้อมูลด้วย fwrite()

  • ฟังก์ชัน fwrite ใช้เขียนข้อมูลเป็นเรคคอร์ดหรือเป็นชุด ซึ่งขนาดของเรคคอร์ดหรือชุดข้อมูลเราเป็นผู้กำหนดขึ้นเองในหน่วยไบต

  • รูปแบบการเขียนคำสั่ง

fwrite(ptr, size, number, fp)

ptr คือค่าตำแหน่งในหน่วยความจำ ซึ่งจะนำข้อมูลที่อ่านได้มาเก็บไว้

size คือขนาดของเรคคอร์ดหรือชุดข้อมูล โดยมีหน่วยเป็นไบต์

number คือจำนวนเร็คคอร์ดหรือชุดข้อมูลที่จะอ่าน

fp คือตัวชี้ตำแหน่งไฟล์ที่ต้องการอ่าน


Fwrite1

The c is easy.

ตัวอย่างการใช้ fwrite( )

#include <stdio.h>

main(){

FILE *fp;

char str[]=“The c is easy.”;

char temp[30];

fp = fopen(“new.txt”, “w”);

fwrite(str, sizeof(str), 1, fp);

fp = freopen(“new.txt”, “r”);

while(!feof(fp)){

fread(temp,sizeof(str),1,fp);

printf(“%s”,temp);

}

fclose(fp);

}

The c is easy


  • Login