您的位置:首页 > 运维架构 > Linux

linux文件编程:fread fwrite

2017-06-07 20:27 169 查看
已知

file1                         file2                             

x1 x2 x3... y1 y2 y3...

x4 x5 x6... y4 y5 y6...

................                  .................

file1 and file2行数列数相同

编程建立

file3

z1 z2 z3....

z4 z5 z6....

..................

满足zn = xn + yn

note

1.EOF  is an indicator, a const int ,default set as -1

2.feof is a function --  int feof(FILE * stream)

returning an non-zero indicator(which is equal to EOF) if reach the end of file,else return 0.

3.a way to turn char into int

char a; //set as what you want

int b = a - '0';

#include<stdio.h>

int readfile(const char *, int *, int *, int *);
void writefile(const char *, int, int, int*);

int main()
{
int mrow, mcol;
int all;
int num1[100] = {0};
int num2[100] = {0};
int num3[100] = {0};
int count = 0;

all = readfile("./file1", &mrow, &mcol, num1);
readfile("./file2", &mrow, &mcol, num2);
printf("all = %d\n", all);

for(count = 0; count <= all; count++)
{
num3[count] = num1[count] + num2[count];
}

writefile("./file3", mrow, mcol, num3);
return 0;
}

void writefile(const char * path, int mrow, int mcol, int* num3)
{
FILE *fp = fopen(path, "w");
if(fp == NULL)
{
perror("writefile");
return;
}
int cr = 0, cc = 0;
int c = 0;
while(num3[c] != 0)
{
for(cr = 0; cr < mrow; cr++)
{
for(cc = 0; cc <= mcol; cc++)
{
fprintf(fp, "%d", num3[c]);
c++;
if(cc != mcol)
{
fprintf(fp, " ");
}
}
fprintf(fp, "\n");
}
}

fclose(fp);
return;
}

int readfile(const char * path, int * mrow, int * mcol, int num1[])
{
FILE * fd = fopen(path, "r");
if(fd == NULL)
{
perror("open file1");
return  1;
}

char c;
char buf1[100];
int i = 0;
while((c = fgetc(fd)) != EOF)
{
buf1[i] = c;
i++;
}

i = 0;

int a = 0;
int t = 0;
int col = 0;
int row = 0;
int flag = 0;
while(buf1[i + 1] != '\0')
{
if(buf1[i] == ' ')
{
a++;
i++;
if(flag == 0)
{
col++;
}
continue;
}
if(buf1[i] == '\n')
{
a++;
i++;
row++;
flag = 1;
continue;
}

t = buf1[i] - '0';
num1[a] = 10 * num1[a];
num1[a] = num1[a] + t;
i++;
}

*mrow = row;
*mcol = col;

fclose(fd);
return a;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 文件编程