Linux 文件1.1—文件的写入与读取—— read与 write

本文详细介绍了在Linux中如何使用write函数写入文件,包括文件描述符、缓冲区和写入字节数的概念。同时,解释了字符串中空字符和空格的区别,并提醒在使用scanf接收字符串时的注意事项。接着,讲解了read函数用于从文件中读取数据的用法和返回值。文章还提到了write操作后光标位置的问题,并提出了通过关闭再打开文件来解决的策略。
摘要由CSDN通过智能技术生成

**

写入文件:

**
#include<unistd.h>
ssize_t write(int fd, const void * buf, size_t count);

fd :文件描述符,上节课讲到,当打开一个文件的时候,会返回一个文件描述符,用此描述符来代表此文件;
buf :无类型指针,是个缓冲区,
count:写入文件的大小,
就是将缓冲区 buf 指针所指向的数据,取出 count 个字节,然后写入 fd 中
在这里插入图片描述
返回值:成功的话,返回的是写入的字节数。失败的话,是 -1。

// 首先打开 file1 以确认是一个空文件
   输入 vi file1
#include<string.h>
#include<unistd.h>
int main(){
   
	int fd;
	fd = open("./file1",O_RDWR);
	if(fd == -1){
   
		fd = open("./file1",O_RDWR|O_CREAT,0600); // 挖槽 没给权限
		if(fd > 0){
   
			printf("creat file1 success\n");
		}
	}
	printf("open file1 success\n");
	// 虽然 buf 是无类型的指针,但是其实不是这样的,类似于 malloc 返回值为 void 一样
	char * buf = "12345678 王天潇全场最佳 \n";
//	write(fd,buf,sizeof(buf));  
	// 划重点 这里有一个天坑, 这里只能写入 12345678 因为在64位操作系统环境下,一个指针记录的是一个对象的地址,sizeof 一个指针,给的是八个字节的大小  32位则是四个字节
	// 所以我们不得不使用另一个函数 strlen 其原型为:size_t strlen(const char *str)   计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。
	// size_t是标准C库中定义的,在64位系统中为long long unsigned int,非64位系统中为long unsigned int。
	// 而 sizeof 的返回值也是 size_t
	write(fd,buf,strlen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值