linux下的多文件编程(含Makefile)

一、相关函数

打开
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
参数
filename 文件名字字符串形式 
flags 打开模式,读操作需要读模式,写操作需要写模式 
Mode 权限 
返回 文件编号

读写
int read(int fd, const void *buf, size_t length);
参数 fd 文件编号 buf 读出数据要保存数据的数组 length 要读的长度 返回 实际读出的长度

int write(int fd, const void *buf, size_t length);
参数 fd 文件编号 buf 要写入的数据 length 数据长度返回 成功0 失败 -1

关闭
int close(int fd);
参数 fd 文件编号返回 成功 0 失败-1

二、实现代码

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include<string.h>
//写操作流程 打开文件–写文件–关闭文件
int file_wirte(char *filename,char *buff)
{
	int fd;
	//open
	fd = open(filename,O_CREAT | O_RDWR , S_IWUSR | S_IRUSR);
	//write
	if(fd>0)
	{
		write(fd,buff,strlen(buff));
		printf("write %s successful\n",filename);
		//close
		close(fd);
	}
	else
	{
		printf("open %s failed\n",filename);
	}
	return 0;
}

//读操作流程 打开文件–读文件–关闭文件 
int file_read(char *filename,char *buff,int len)
{
	int fd;
	int ret;
	//open
	fd = open(filename,O_RDWR);
	//read
	if(fd>0)
	{
		ret = read(fd,buff,len);
		printf("read %s successful\n",filename);
		//close
		close(fd);
	}
	else
	{
		printf("open %s failed\n",filename);
	}
	return ret;
}

int main()
{
	char array[30]={0};
	int ret; 
	file_wirte("file_test.txt","hello linux");
	ret = file_read("file_test.txt",array,100);
	printf("read len:%d\n",ret);
	printf("read result:%s\n",array);
	return 0;
}

运行结果:
在这里插入图片描述

三、用Makefile的方式去实现

在这里插入图片描述
file.c

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include<string.h>
//写操作流程 打开文件–写文件–关闭文件
int file_wirte(char *filename,char *buff)
{
	int fd;
	//open
	fd = open(filename,O_CREAT | O_RDWR , S_IWUSR | S_IRUSR);
	//write
	if(fd>0)
	{
		write(fd,buff,strlen(buff));
		printf("write %s successful\n",filename);
		//close
		close(fd);
	}
	else
	{
		printf("open %s failed\n",filename);
	}
	return 0;
}

//读操作流程 打开文件–读文件–关闭文件 
int file_read(char *filename,char *buff,int len)
{
	int fd;
	int ret;
	//open
	fd = open(filename,O_RDWR);
	//read
	if(fd>0)
	{
		ret = read(fd,buff,len);
		printf("read %s successful\n",filename);
		//close
		close(fd);
	}
	else
	{
		printf("open %s failed\n",filename);
	}
	return ret;
}

file.h

#ifndef __FILE_H
#define __FILE_H
int file_wirte(char *filename,char *buff);
int file_read(char *filename,char *buff,int len);
#endif

Makefile

TARGET = main
CC = gcc
CFLAGS = -g
OBJS = file.o main.c

$(TARGET):$(OBJS)
	$(CC) $(OBJS) -o $(TARGET)
file.o:file.c
	$(CC) -c file.c
clean:
	rm -rf $(TARGET) *.o

main.c

#include<stdio.h>
#include "file.h"

int main()
{
	char array[30]={0};
	int ret; 
	file_wirte("file_test.txt","hello linux");
	ret = file_read("file_test.txt",array,100);
	printf("read len:%d\n",ret);
	printf("read result:%s\n",array);
	return 0;
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值