学习日志 姓名: 张朋 日期:2018年07月27日
|
|
今日学习任务
|
|
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) | 今日任务按计划完成。
|
今日开发中出现的问题汇总
|
|
今日未解决问题
| 无 |
今日开发收获 | 通过今天的学习,我学会了怎么进行文件的创建和使用,明白了文件操作的几个基本步骤,掌握了进行文件操作时经常用到的函数。同时,理解了什么是系统调用,怎么实现用户对操作系统内核的访问。 |
自我评价
(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)
| 今天可以跟上老师的步骤,通过今天的学习,让我明白了简单的基本文件操作。让我之前比较陌生的知识点有了比较深刻的理解。同时,由于需要查找API,所以对自身的英语水平有一定的要求,自己在看文档的时候还是非常吃力的,这就要求自己平时应该注重自己英语能力的提高,这将对以后的工作与学习有比较大的帮助。 |
其他
| 无 |
对文件操作的代码(课堂练习):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int read_line(int fd, char *buffer, int max_len)
{
int i;
int n_read;
char temp;
for(i = 0; i < max_len; i++)
{
n_read = read(fd,&temp,1);
if(n_read == -1)
{
perror("read error!");
return -1;
}
if(n_read == 0)
{
buffer[i] = '\0';
return 0;
}
if(temp == '\n')
{
break;
}
buffer[i] = temp;
}
buffer[i] = '\0';
return i + 1;
}
int write_line(int fd, char *buffer, int len)
{
write(fd,buffer,len);
write(fd,"\n",1);
}
int main(int argc, char *argv[])
{
//char file_name[100] = "c.txt";
#if 0
int fd = creat(file_name,0655);
if(fd == -1)
{
perror("creat file error!");
exit(1);
}
printf("the file fd = %d\n",fd);
#endif
int fd;
int fd2;
char buffer[1024];
fd = open(argv[1], O_RDWR | O_APPEND | O_CREAT, 0655);
fd2 = open(argv[2], O_RDWR | O_APPEND | O_CREAT, 0655);
if(fd == -1)
{
perror("open file error!");
exit(1);
}
printf("the file fd = %d\n",fd);
#if 0
int i;
for(i = 0; i < 3; i++)
{
printf("Please input data:\n");
memset(buffer,0,sizeof(buffer));
gets(buffer);
write(fd,buffer,strlen(buffer));
write(fd,"\n",1);
}
#endif
lseek(fd,0,SEEK_SET);
int i = 0;
int ret;
while((ret = read_line(fd,buffer,sizeof(buffer))) > 0)
{
write_line(fd2,buffer,strlen(buffer));
//printf("第%d行 %s\n",i + 1,buffer);
//i++;
memset(buffer,0,sizeof(buffer));
}
return 0;
}