1. 程式人生 > >C語言筆記、檔案io的操作

C語言筆記、檔案io的操作

 

一個自己定義的標頭檔案:

檔名為 xxx.h

內容:

#ifndef _MYHEAD_H   
#define _MYHEAD_H

#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>

#endif

紅色字型必須存在,中間可以新增你所有需要的標頭檔案

------------------------------------------------------------------

對於檔案的操作

#include "myhead.h"

int main()
{
//1.開啟檔案
int fd = open("./1.txt",O_RDWR);
if(fd == -1)
{
printf("open file faield\n");
return -1;//異常退出
}
printf("open file OK~~~\n");

//2.將內容寫入到檔案
char buf[10] = "hellomeinv";
int w_size = write(fd,buf,sizeof(buf));
if(w_size == -1)
{
printf("write failed\n");
return -1;
}

/*

******************************************************

lseek函式可以用於文字檔案的游標重新定位,因為開啟一個文字文件後,如果需要閱讀游標就是直接在檔案內容的最後面,從而導致檢視文件時不能檢視,使用lseek()

off_t lseek(int fd, off_t offset, int whence);
隨機定位符
fd:需要移動檔案游標所對應的檔案描述符
offest:游標的偏移量
whence:從哪裡開始偏移
SEEK_SET:從檔案起始位置開始偏移
SEEK_CUR:從檔案的當前位置開始偏移
SEEK_END:從檔案的末尾開始偏移

舉例:

lseek(fd,-10,SEEK_END)  //從檔案的末尾開始向前偏移10個位元組的單位長度

*/
lseek(fd,-10,SEEK_END);

——————————————————

也可以不適用lessk函式而在每次操作完檔案關閉檔案。

程式碼可以是:

close(fd);

int fd = open("./1.txt",O_RDWR);
if(fd == -1)
{
printf("open file faield\n");
return -1;//異常退出
}
printf("open file OK~~~\n");

重新開啟接第三步,讀取檔案內容。

********************************************************************************************************

 

lseek(fd,-10,SEEK_END);


//3.讀取檔案內容並且打印出來
char buff[128] = {0};
int r_size = read(fd,buff,sizeof(buff));
if (r_size == -1)
{
printf("read failed\n");
return -1;
}

//列印檔案內容
printf("%s\n",buff);

close(fd);
return 0;
}

——————————————————————————————————————

如何複製一個文字文件。

#include "myhead.h"

int main()
{
//建立一個新檔案
int fd = open("./3.txt",O_RDWR|O_CREAT,0777);
if (fd == -1)
{
printf("creat file failed\n");
return -1;
}
//開啟要複製的檔案

int fdd = open("./1.txt",O_RDWR);
if (fdd == -1)
{
printf("open 1.txt failed\n");
return -1;
}
char k[120] = {0};
int r_read,r_write;

//使用while迴圈實現讀取和寫入。
while(1)
{
r_read = read(fdd,k,sizeof(k));
r_write = write(fd,k,sizeof(k));
if (r_write == -1)
{
printf("write failed\n");
return -1;
}
printf("over\n");
break;
}
close(fdd);
close(fd);
return 0;
}