01.17两个矩阵相加,输出矩阵

主函数:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


#include <errno.h>


int main()
{
    int fd1;
    int fd2;
    int fd3;


    int n_read1;
    int n_read2;


    int data1[4];
    int data2[4];
    int data3[4];


    char buffer1[1024];
    char buffer2[1024];
    char buffer3[1024];


    if((fd1 = open("test1.txt",O_RDONLY)) == -1)
    {
        perror("open file error!");
exit(1);
    }
    
    if((fd2 = open("test2.txt",O_RDONLY)) == -1)
    {
        perror("open file error!");
exit(1);
    }
 
    if((fd3 = open("text3.txt",O_CREAT | O_WRONLY,0655)) == -1)
    {
        perror("open file error!");
exit(1);
    }
   
    memset(buffer1,0,sizeof(buffer1));
    memset(buffer2,0,sizeof(buffer2));


    n_read1 = read_line(fd1,buffer1,sizeof(buffer1));
    n_read2 = read_line(fd2,buffer2,sizeof(buffer2));
   


    if((strcmp(buffer1,"begin")) == 0 && (strcmp(buffer2,"begin") == 0))
    {
        write(fd3,buffer1,strlen(buffer1));
write(fd3,"\n",1);
    }
    else
    {
        printf("begin is not find!\n");
goto error;
    }
    
    while(1)
    {
        memset(buffer1,0,sizeof(buffer1));
        memset(buffer2,0,sizeof(buffer2));
        memset(buffer3,0,sizeof(buffer3));

n_read1 = read_line(fd1,buffer1,sizeof(buffer1));
n_read2 = read_line(fd2,buffer2,sizeof(buffer2));
        


if(n_read1 == 0 || n_read2 == 0)
{
   break;
}


if((strcmp(buffer1,"end")) == 0 && (strcmp(buffer2,"end") == 0))
{
   write(fd3,buffer1,strlen(buffer1));
   printf("copy data is over!\n");
   break;
}
        
parse_str(data1,buffer1);
//printf("buffer1 = %s\n",buffer1);
//printf("data[0]:%d data[1]:%d data[2]:%d data[3]:%d\n",data1[0],data1[1],data1[2],data1[3]);
parse_str(data2,buffer2);
//printf("buffer2 = %s\n",buffer2);
//printf("data[0]:%d data[1]:%d data[2]:%d data[3]:%d\n",data2[0],data2[1],data2[2],data2[3]);
add_sum(data1,data2,data3);
       
printf("data[0]:%d data[1]:%d data[2]:%d data[3]:%d\n",data3[0],data3[1],data3[2],data3[3]);
       data_to_str(data3,buffer3);


//printf("buffer3 = %s\n",buffer3);
//printf("data[0]:%d data[1]:%d data[2]:%d data[3]:%d\n",data3[0],data3[1],data3[2],data3[3]);


write(fd3,buffer3,strlen(buffer3));
write(fd3,"\n",1);

    }
    
error:


    return 0;
}//

read_line:

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!");
   exit(1);
}


if(n_read == 0)
{
   return 0;
}


if(temp == '\n')
{
            return i;
}
else
{
   buffer[i] = temp;
}
    }


    return i;
}///

parse_str:

#include <stdlib.h>
#include <string.h>


void parse_str(int *data, char *src)
{
    int i = 0;
    int len = 0;
    
    char *temp = (char *)malloc(sizeof(char) * 100);
    
    while(*src != '\0')
    {
        if(*src == ' ')
{
            strncpy(temp,src - len,len);
   
   data[i] = atoi(temp);


   i++;
   
   len = 0;
}
else
{
   len++;
}

src++;
    }


    strncpy(temp,src - len,len);
    data[i] = atoi(temp);
}

int2str:

#include <stdio.h>
#include <string.h>


#define MAX_SIZE 1024


void reverse_string(char *s1, int len)
{
    int i;


    char temp;


    for(i = 0; i < len / 2; i++)
    {
        temp = *(s1 + i);
*(s1 + i) = *(s1 + len - 1 - i);
*(s1 + len - 1 - i) = temp;
    }
}


char * int2str(int num)
{
    int i = 0;
    
    char temp;
    static char result[MAX_SIZE];
    
    while(num > 0)
    {
        temp = (num % 10) + '0';
result[i] = temp;
num = num / 10;
i++;
    }


    result[i] = '\0';
    
    reverse_string(result,strlen(result));


    return result;
}
/

data_to_str:

#include <string.h>


void data_to_str(int *data, char *src)
{
    int i;


    for(i = 0; i < 3; i++)
    {
        strcat(src,int2str(data[i]));
strcat(src," ");
    }


    strcat(src,int2str(data[i]));
}

add_sum:

int add_sum(int *data1, int *data2, int *sum)
{
    int i;


    for(i = 0; i < 4; i++)
    {
        sum[i] = data1[i] + data2[i];
    }
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值