将文件1和文件2中的矩阵相加后存入文件3中。

include

define m 1024

int count(char *c, char *a, char *b);
int carry(int j, char *c, char temp);

int main()
{
int i, j;

FILE *file1 = fopen("./1.txt", "r");//打开文件1。
if (NULL == file1)
{
    perror("fopen1");
    return 1;
}
int count1 = 0;
char a[m] = {0};
count1 = fread(a, sizeof(char), 1024, file1);//读出文件1中的数据。
if (0 == count1)
{
    perror("fread1");
    fclose(file1);
    return 2;
}
fclose(file1);

FILE *file2 = fopen("./2.txt", "r");//打开文件2。
if (NULL == file2)
{
    perror("fopen2");
    return 2;
}
int count2 = 0;
char b[m] = {0};
count2 = fread(b, sizeof(char), 1024, file2);//读出文件2的数据。
if (0 == count2)
{
    perror("fread2");
    fclose(file2);
    return 3;
}
fclose(file2);

FILE *file3 = fopen("./3.txt", "w");//创建文件3。
if (NULL == file3)
{
    perror("fopen3");
    return 4;
}
int count3 = 0;
char c[m] = {0};
count(c, a, b);//将文件1中的数据与文件2中的进行相关处理。

count3 = fwrite(c, sizeof(char), 1024, file3);//将处理得到的数据写入文件3中。
if (0 == count3)
{
    perror("fwrite");
    fclose(file3);
    return 5;
}
fclose(file3);

return 0;

}
//接下来就是相关的处理函数部分。
int count(char *c, char *a, char *b)
{
int i, j;
char temp = 0;

for (i = 0, j = 0; i < m; i++)
{

//读出的文件1中的数据以及文件2中的数据,我们可能碰到的字符,分别是:空格,数字,换行。我们需要对相应的情况作出不同的处理过程。
if (a[i] >= 48 && b[i] >= 48)//如果两边的都是数字,那么久进行相加操作。但这里要注意可能出现进位的问题。
{
temp = (a + i) + (b + i) - ‘0’;
if (temp > 57)
{
if (0 == i)
{
c[j] = ‘1’;
c[++j] = temp - 10;
j++;
}
else
{
carry(j, c, temp);//普遍状况下的进位函数。
j++;
}
}
else
{
c[j] = temp;
j++;
}
}
else if (a[i] < 48 && b[i] < 48)//遇到空格或者换行。
{
c[j] = *(a + i);
j++;
}
else
{
a[i] < 48 ? (c[j] = (b + i)) : (c[j] = (a + i));
j++;
}
}

return 0;

}

//相关的进位函数,这里运用递归。当有进位时将进位与前一位相加,得出进位后的数存入数组中。
int carry(int j, char *c, char temp)
{
int t = (j - 1);
c[j] = temp - 10;
if (c[t] + ‘1’ > 57 && t > 0)
{
carry(t, c, temp);
c[t] = c[t] + ‘1’ - 10;
}
else
{
c[t] = c[t] + ‘1’ - ‘0’;
}

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值