学习日志 姓名:王森 日期:07.27
|
|
今日学习任务
| 文件操作 文件的相关指令 文件创建、打开、录入、关闭等 |
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) | 文件操作 文件的相关指令 文件创建、打开、录入、关闭等 |
今日开发中出现的问题汇总
| 无 |
今日未解决问题
| 无 |
今日开发收获 | 复习了文件的相关知识,学会了在Linux下如何进行文件的操作 |
自我评价
(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)
| 自己的C语言知识相对薄弱,不能够很好的跟上老师的讲解速度,趁着作业与休息的时间加强复习知识 |
其他
| 无
|
代码如下:
#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;
}