**
写入文件:
**
#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