苏嵌//张朋//2018.07.27

苏嵌                                                                                                                                   项目实战

学习日志                                       姓名: 张朋                      日期:2018年07月27日

 

 

 

 

今日学习任务

 

  1. 了解操作系统提供的工具(文件操作、网络、多任务、数据库、工具)
  2. 理解什么是系统调用。
  3. 学会使用API(用户编程接口)。
  4. 掌握文件的操作。

今日任务完成情况

 

(详细说明本日任务是否按计划完成,开发的代码量)

今日任务按计划完成。

  1. 掌握了文件操作的几个函数(creat、open、read、write、close、lseek)。
  2. 掌握了什么是系统调用,了解了操作系统的提供的工具有哪些。
  3. 明白了操作系统的两大空间划分。
  4. 初步学会了怎么使用API(用户编程接口)

今日开发中出现的问题汇总

 

  1. 怎么进行一行一行的读数据和写数据?
  2. 怎么实现将结构体的成员数据都保存在一行?

 

今日未解决问题

 

今日开发收获

通过今天的学习,我学会了怎么进行文件的创建和使用,明白了文件操作的几个基本步骤,掌握了进行文件操作时经常用到的函数。同时,理解了什么是系统调用,怎么实现用户对操作系统内核的访问。

 

自我评价

 

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

 

 

今天可以跟上老师的步骤,通过今天的学习,让我明白了简单的基本文件操作。让我之前比较陌生的知识点有了比较深刻的理解。同时,由于需要查找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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值