第一课主要讲利用ubuntu 完成一些之前学过的文件操作,结合c语言来实现
利用的函数有
1 open函数
主要是打开文件;
int open(const char *pathname, int flags[, mode_t mode);
2 read函数
作用是读取已获得文件数据,需要函数unistd.h 形式如下
ssize_t read(int fd,void * buf,size_t count);
fd | 为从open或create函数返回的文件描述符,简单来说fd就是open一个文件后赋的值。 |
buf | 缓冲区,就是把文件中的内容按指定大小存在buf中后续进行输出 |
count | 最大读取的长度,即指定要读去数据的长度或者大小 |
我单
3.write函数
作用与read相似,都在一个函数库里面
ssize_t write(int fd, void *buf, size_t count);
4.lseek函数
都在一个库里
ssize_t write(int fd, off_t offset, int whence);
参数如下
fd: 从open或create函数返回的文件描述符
offset: 对文件偏移量的设置,参数可正可负
whence: 控制设置当前文件偏移量的方法
– whence = SEEK_SET: 文件偏移量被设置为offset
– whence = SEEK_CUR: 文件偏移量被设置为当前偏移量+offset
– whence = SEEK_END: 文件偏移量被设置为文件长度+offset
5.close 函数
int close(int fd);
成功返回1,反之-1
2.案例
使用open函数打开或创建一个文件,将文件清空,使用write函数在文件中写入数据,并使用read函数将数据读取并打印。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(){
int tempFd = 0;
char tempFileName[20] = "test.txt";
//Step 1. open the file.
tempFd = open(tempFileName, O_RDWR|O_EXCL|O_TRUNC, S_IRWXG);
if(tempFd == -1){
perror("file open error.\n");
exit(-1);
}//of if
//Step 2. write the data.
int tempLen = 0;
char tempBuf[100] = {0};
scanf("%s", tempBuf);
tempLen = strlen(tempBuf);
write(tempFd, tempBuf, tempLen);
close(tempFd);
//Step 3. read the file
tempFd = open(tempFileName, O_RDONLY);
if(tempFd == -1){
perror("file open error.\n");
exit(-1);
}//of if
off_t tempFileSize = 0;
tempFileSize = lseek(tempFd, 0, SEEK_END);
lseek(tempFd, 0, SEEK_SET);
while(lseek(tempFd, 0, SEEK_CUT)!= tempFileSize){
read(tempFd, tempBuf, 1024);
printf("%s\n", tempBuf);
}//of while
close(tempFd);
return 0;
}//of main
还存在问题
待解决
总结:本次课最大的收获就是规范代码格式和变量命名,以前写都没怎么注意这些,定义变量也是a,b字母之类的,容易弄混不好分辨,而且注释以后也得落实到位,另外就是对文件的读写加深了影响,也复习了c,还有一些小错误满满解决。