- write函数
man手册的相关介绍
- 代码实现
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int fd;
int n_write;
char readBuf[20];
//int open(const char *pathname, int flags);
fd=open("./file1",O_RDWR);//可读可写
if(fd == -1){
printf("创建失败\n");
//int open(const char *pathname, int flags, mode_t mode);
fd=open("./file1",O_RDWR|O_CREAT,0600);//如果没有file1则创建,0600:权限是可读可写
if(fd > 0){
printf("创建成功,fd=%d\n",fd);
}
}
printf("打开成功,fd=%d\n",fd);
printf("请输入你需要写入file1的字符串\n");
fgets(readBuf,20,stdin);//stdin是键盘的输入
//ssize_t write(int fd, const void *buf, size_t count);
n_write=write(fd,readBuf,strlen(readBuf));//把readBuf里面的内容写道fd里面
close(fd);//关闭文件养成好习惯
return 0;
}
- 运行结果
- 期间遇到的问题(小插曲)
printf("请输入你需要写入file1的字符串\n");
fgets(readBuf,20,stdin);//stdin是键盘的输入
一开始我用的是
scanf("readBuf",readBuf);
发现输入字符串一有空格,输出就会卡在这地方后面的就输入的就不显示了。(scanf函数就是冲缓存里面取bai字符串,遇到du空格或换行符结束)。
后来我换成了
gets(readBuf);
结果Linux下出现警告:
/tmp/cciTjNvl.o:在函数‘main’中:
demo3.c:(.text+0xaa): 警告: the `gets' function is dangerous and should not be used.
经过查阅发现要用
// char *fgets(char *s, int size, FILE *stream);
fgets(readBuf,20,stdin);//stdin是键盘的输入
学到了一手
- 坚持冲冲冲!