阅读背景:

Linux平台下利用系统接口函数按照行读写文件

来源:互联网 

要求:支持大文件(1M)一次性读入

源代码如下:

#include<stdio.h>
#include<fcntl.h>
#include<stdlib.h>
#include<string.h>
#define rwmode 2

//清屏命令函数
void clear()
{
    char clscode[] = {0x1B, 0x5B, 0x48, 0x1B, 0x5B, 0x4A};
    printf("%s",clscode);
}

//打开文件
int openFile()
{
   int fd;
   fd=open("/root/wcy/test1/test.txt",rwmode);
   if(fd==-1){
       printf("打开文件失败,文件路径不正确或者文件不存在!\n");
       exit(0);
   }else return fd;
 
}

//读取文件
void readFile(int fd,char buffer[],int len){

   int n=read(fd,buffer,len);
   buffer[n]='

要求:支持大文件(1M)一次性读入

源代码如下:

#include<stdio.h>
#include<fcntl.h>
#include<stdlib.h>
#include<string.h>
#define rwmode 2

//清屏命令函数
void clear()
{
    char clscode[] = {0x1B, 0x5B, 0x48, 0x1B, 0x5B, 0x4A};
    printf("%s",clscode);
}

//打开文件
int openFile()
{
   int fd;
   fd=open("/root/wcy/test1/test.txt",rwmode);
   if(fd==-1){
       printf("打开文件失败,文件路径不正确或者文件不存在!\n");
       exit(0);
   }else return fd;
 
}

//读取文件
void readFile(int fd,char buffer[],int len){

   int n=read(fd,buffer,len);
   buffer[n]='\0';
   printf("文件的内容是:");
   printf("%s",buffer);
   printf("\n");
}

void lseekFile(int fd){

  if(lseek(fd,0L,SEEK_END)==-1){
	clear();
	printf("定位读写文件失败!");
   }
  else{
	char block[512]=" lseek file";
	write(fd,block,strlen(block));
	printf("定位读写文件成功!\n");
   }

}

int main(){
 
  int fd,n,select;
  char buffer[1024*1024];
  clear();
  while(1){
  printf("******************************\n") ; 
  printf("******   读写文件系统   ******\n");
  printf("****  1 显示特定文件内容:****\n");
  printf("****  2 定位读写文件内容:****\n");
  printf("****  0 退出本系统       *****\n");
  printf("******************************\n");
  printf("请输入功能编号:");
  scanf("%d",&select);
  switch(select){
   
   case 0:
	clear();
	close(fd);
	exit(0);
   case 1:
	clear();
	fd=openFile();
	readFile(fd,buffer,sizeof(buffer)-1);
	close(fd);
	break;
   case 2:
	clear();
	fd=openFile();
	lseekFile(fd);
	close(fd);
        break;
  default:
	clear();
	printf("你输入功能编号错误,请重新输入!\n");
  }
 }
  exit(0);
}

注意:运行此程序的时候,务必有文件"/root/wcy/test1/test.txt",如果没有这个目录下的这个文件,请修改成你的文件所在的目录。


'; printf("文件的内容是:"); printf("%s",buffer); printf("\n"); } void lseekFile(int fd){ if(lseek(fd,0L,SEEK_END)==-1){ clear(); printf("定位读写文件失败!"); } else{ char block[512]=" lseek file"; write(fd,block,strlen(block)); printf("定位读写文件成功!\n"); } } int main(){ int fd,n,select; char buffer[1024*1024]; clear(); while(1){ printf("******************************\n") ; printf("****** 读写文件系统 ******\n"); printf("**** 1 显示特定文件内容:****\n"); printf("**** 2 定位读写文件内容:****\n"); printf("**** 0 退出本系统 *****\n"); printf("******************************\n"); printf("请输入功能编号:"); scanf("%d",&select); switch(select){ case 0: clear(); close(fd); exit(0); case 1: clear(); fd=openFile(); readFile(fd,buffer,sizeof(buffer)-1); close(fd); break; case 2: clear(); fd=openFile(); lseekFile(fd); close(fd); break; default: clear(); printf("你输入功能编号错误,请重新输入!\n"); } } exit(0); } #include<stdio



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: