`
忧里修斯
  • 浏览: 436070 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

c读写文件实例

阅读更多
#include <stdio.h>                                                
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>

int main(int argc,char *argv[]){
    //读取文件路径
    char *filepath = argv[1];
    //保存文件路径
    char *savepath = argv[2];
    int fd,savefd,size;
    char buffer[1024];
    struct stat fstat;
    mode_t mode;

    //打开文件
    fd = open(filepath,O_RDWR);
    if((stat(filepath,&fstat)) < 0){
        perror("run fstat error");
    }
    //判断文件类型
    mode = fstat.st_mode;
    if(S_ISREG(mode)){
        printf("Type:regular file\n");
    }else if(S_ISDIR(mode)){
        printf("Type:direcory\n");
        return 0;
    }
    if(fd != -1){
        //在文件不存在新建时生效,使用8进制设置新建文件的权限
        savefd = open(savepath,O_RDWR|O_CREAT,0777);
        //读取文件内容
        while((size=read(fd,buffer,sizeof(buffer))) > 0){
            printf("%s",buffer);
            //写文件
            if(savefd != -1){
                //注意:读取多少,则写入多少,此处为size
                if((write(savefd,buffer,size)) == -1){
                    perror("Write error!");
                }
            }
        }
    }
    exit(0);
}                                                                     


实例二:
/*
**功能:文件读写实例
*/
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<sys/file.h>
#include<string.h>
#include "lockset.h"
void lock_set(int fd,int type);
int main(int argc,char *argv[]){
	
	char *input = argv[1];
	char *filepath = argv[2];

	//注意一定需要先清零,否则读取的时候就会多读出无效的字符
	char rdbuff[100] = {0};
	
	printf("input:%s\n",input);
	printf("filepath:%s\n",filepath);
	int opfd,wrsize,rdsize,len;
	opfd = open(filepath,O_RDWR|O_CREAT,0777);
	if(opfd == -1){
		perror("Open Error!\n");
		exit(1);
	}
	//加上写入锁
	lock_set(opfd,F_WRLCK);
	if((wrsize = write(opfd,input,strlen(input))) == strlen(input)){
		printf("Write Success!\n");
	}
        //等待输入字符,起到暂停的作用
	getchar();

	//解锁
	lock_set(opfd,F_UNLCK);
	getchar();

	//加上读取锁
	lock_set(opfd,F_RDLCK);
	lseek(opfd,0,SEEK_SET);
	//当读取的rdsize == 0时表示读取完,-1表示读取失败
	if((rdsize = read(opfd,rdbuff,sizeof(rdbuff))) > 0){
		printf("Read:%s\n",rdbuff);
	}else{
		printf("Read Error!\n");
	}
	//解锁
	lock_set(opfd,F_UNLCK);
	getchar();
	close(opfd);
	exit(0);
}


lockset.h头文件
void lock_set(int fd,int type){

	struct flock lock;
	lock.l_whence = SEEK_SET;
	lock.l_start = 0;
	lock.l_len = 0;
	while(1){
		lock.l_type = type;
		if((fcntl(fd,F_SETLK,&lock)) ==0){
			if(lock.l_type == F_RDLCK){
				printf("read lock set by %d\n",getpid());
			}else if(lock.l_type == F_WRLCK){
				printf("write lock set by %d\n",getpid());
			}else if(lock.l_type == F_UNLCK){
				printf("release lock set by %d\n",getpid());
			}
			return;
		}
		fcntl(fd,F_GETLK,&lock);
		if(lock.l_type != F_UNLCK){
			if(lock.l_type == F_RDLCK){
				printf("Read lock already set by %d\n",lock.l_pid);
			}else if(lock.l_type == F_WRLCK){
				printf("Write lock already set by %d\n",lock.l_pid);
			}
			getchar();
		}
	}
}
分享到:
评论

相关推荐

    纯C语言读写ini配置文件

    标题 "纯C语言读写ini配置文件" 描述的是一个使用C语言编写的程序,能够处理常见的ini配置文件。ini文件是一种简单的文本格式,通常用于存储应用程序的设置和配置信息。这种格式易于阅读和编辑,适合小型应用或系统...

    基本的C语言文件读写操作的代码示例

    c语言文件读写操作代码基本的C语言文件读写操作的代码示例基本的C语言文件读写操作的代码示例基本的C语言文件读写操作的代码示例基本的C语言文件读写操作的代码示例基本的C语言文件读写操作的代码示例基本的C语言...

    用C语言读写SGY格式的地震数据文件-苏.rar_C语言;读写SGY格式文件_sgy_sgy文件读取_sgy读写_读写sgy文件

    在提供的PDF文档《用C语言读写SGY格式的地震数据文件-苏》中,应该详细介绍了以上步骤,并可能提供了具体的代码示例。通过阅读和理解这份文档,你可以获得更深入的指导,学习如何实际操作C语言来处理SGY文件。这是一...

    C语言读写文件操作.pdf

    C语言读写文件操作是C语言编程中的一个重要部分,主要涉及到文件的打开、读取、写入和关闭等操作。在C语言中,对文件的操作是通过标准库函数实现的,包含在头文件中。下面我将详细阐述C语言在文件操作方面的知识点:...

    c语言读写ini文件

    在C语言中,读写INI文件是一个常见的任务,特别是在配置文件处理方面。INI文件是一种简单的文本格式,用于存储用户配置信息或程序设置。由于题目提到不使用Win32系统的DLL,我们将探讨如何纯C语言实现读写INI文件的...

    C语言读写配置文件

    这篇博客“C语言读写配置文件”将深入探讨如何在C语言中实现这个功能。 配置文件通常是文本文件,如.ini或.cfg文件,它们包含键值对,用于存储应用程序的设置。C语言没有内置的库函数来直接处理这些文件,但我们...

    c语言读写sgy格式

    此外,文档还提供了一段示例代码,说明如何使用C语言的函数读取SEGY格式文件。在这段代码中,首先使用`fopen`函数以二进制读取模式打开SEGY文件,然后使用`fread`函数读取文件头的3200字节内容,紧接着使用`fclose`...

    C语言读写文件到磁盘.rar

    在C语言中,读写文件到磁盘是程序与外部存储交互的基本操作,这对于数据的保存和恢复至关重要。本文将详细讲解如何使用C语言进行文件的读写操作,并通过具体的代码示例帮助理解。 首先,要进行文件操作,我们需要...

    C语言直接读写DWG文件源代码

    该资源提供了一个完整的示例代码,展示了如何使用C语言读写DWG文件。 DWG文件格式 DWG是一种二进制文件格式,用于存储CAD设计图像。DWG文件由一个头文件和多个数据块组成。头文件包含了文件的基本信息,如文件版本...

    c语言文件的读写操作

    ### C语言文件的读写操作 #### 知识点概览 本文将详细介绍C语言中文件的基本读写操作。在C语言中,文件是通过`&lt;stdio.h&gt;`库中的`FILE`结构体来处理的。文章中的代码示例展示了如何打开文件、向文件中写入数据以及...

    C语言读写文件,非常适合小白学习

    ### C语言文件读写操作详解 #### 一、前言 C语言作为一种广泛使用的编程语言,在文件处理方面提供了丰富的功能。对于初学者来说,掌握如何在C语言中进行文件的读写操作至关重要。本文将详细介绍如何使用C语言来...

    C语言读写文件操作pdf文档

    ### C语言读写文件的基本概念 #### 文件的打开与关闭 在C语言中,文件的读写操作通常涉及以下几个步骤: 1. **打开文件**:使用`fopen`函数,传入文件路径和模式(例如只读"r",写入"w",追加"a"等)。 2. **文件...

    C语言文件随机读写

    在本主题中,我们将深入探讨如何在C语言中实现文件的随机读写,并通过实际示例来理解这一过程。 首先,我们需要了解C语言中打开文件的基本方法。`fopen()`函数用于打开一个文件,它接受两个参数:文件名和模式。...

    c语言文件读写示例(c语言文件操作)

    这里我们将深入探讨标题和描述中提到的C语言文件读写示例,以及如何实现这些功能。 首先,我们要了解C语言中的基本文件操作函数,如`fopen()`, `fclose()`, `fread()`, `fwrite()`, `fgets()`, `fputs()`等。这些...

    c语言文件读写操作代码,包含实例及解释.rar

    c语言文件读写操作代码c语言文件读写操作代码,包含实例及解释.rarc语言文件读写操作代码,包含实例及解释.rarc语言文件读写操作代码,包含实例及解释.rarc语言文件读写操作代码,包含实例及解释.rarc语言文件读写操作...

    c语言文件读写 适合初学

    本文将深入探讨C语言中的文件读写,并通过实例讲解如何实现。 首先,我们要知道C语言中文件操作涉及的主要函数,它们位于`&lt;stdio.h&gt;`头文件中。主要有`fopen()`、`fclose()`、`fprintf()`、`fscanf()`、`fread()`、...

    TDMS文件读写【官方C语言例程】

    在C语言中读写TDMS文件,通常需要使用NI提供的库函数,例如TDM C DLL。这个库提供了API接口,使得开发者能够方便地将数据写入TDMS文件或从TDMS文件中读取数据。 1. **TDMS文件结构**: TDMS文件由一系列的“对象”...

    linux c 配置文件读写

    在提供的压缩包中,我们看到了`iniFileRW.C`和`maintest.c`两个源文件以及`IniFile.h`头文件,这表明示例代码可能使用了INI文件作为配置文件。INI文件是一种简单、易于理解的结构,通常由节(section)、键(key)和...

    c语言读写文件

    在C语言中,读写文件是程序与外部数据交互的基本操作。这主要涉及到标准库中的`stdio.h`头文件,其中定义了一系列的函数接口来实现文件的读写操作。本教程将详细介绍C语言中如何进行文件的读写,并提供一些实践性的...

Global site tag (gtag.js) - Google Analytics