2015-11-15 82 views
2

我想将文件从文件复制到另一个文件,而不进行扫描,将它们存储到数组中并打印出来。我想直接复制。将整数从文件复制到另一个文件C

所以,为此我写了这段代码。但我无法将整数复制到文件中。我需要做下一个操作。

First number=first number 
Second number=first number+second number 
Third number=first number+second number+third number ... 

这是我的代码。我有1 2 3 4 5 6 7 8 9data.dat

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

int main(){ 
    char number='0'; 
    char a; 

    FILE *data; 
    FILE *sum; 

    data=fopen("data.dat", "rt"); 

    if (data==NULL){ 
     printf("Error abriendo fichero ..."); 
     exit(1); 
    } 

    sum=fopen("sum.dat", "wt"); 

    if (sum==NULL){ 
     printf("Error abriendo fichero ..."); 
     exit(1); 
    } 

    while((a=fgetc(data))!=EOF){ 
     number=number+a; 
     putc(number,sum); 
    } 
    return 0;  
} 

我应该得到sum.dat1 3 6 10 15 21 28 36 45

1=1 
3=2+1 
6=3+2+1 
10=4+3+2+1 
15=5+4+3+2+1 
21=6+5+4+3+2+1 
28=7+6+5+4+3+2+1 
36=8+7+6+5+4+3+2+1 
45=9+8+7+6+5+4+3+2+1 
+0

'fgetc'读取原始字节。如果我使用'fscanf'也给我错误,请使用'fscanf' – Unimportant

+0

@ user1320881。 –

+1

当然这意味着你写作时会犯同样的错误。用'fprintf'代替'putc'。 – Unimportant

回答

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

int main(){ 
    char number='0'; 
    char a; 

    FILE *data; 
    FILE *sum; 

    data=fopen("data.dat", "rt"); 

    if (data==NULL){ 
     printf("Error abriendo fichero ..."); 
     exit(1); 
    } 

    sum=fopen("sum.dat", "wt"); 

    if (sum==NULL){ 
     printf("Error abriendo fichero ..."); 
     exit(1); 
    } 

    while((fscanf(data," %d",a))!=EOF){ 
     number=number+a; 
     fprintf(sum,"%d",number); 
    } 
    return 0;  
} 
+0

'number'和'a'必须是'int'以匹配'%d'。 – Unimportant

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

int main(){ 
    int number=0; 
    int a; 

    FILE *data; 
    FILE *sum; 

    data=fopen("data.dat", "rt"); 

    if (data==NULL){ 
     printf("Error abriendo fichero ..."); 
     exit(1); 
    } 

    sum=fopen("sum.dat", "wt"); 

    if (sum==NULL){ 
     printf("Error abriendo fichero ..."); 
     exit(1); 
    } 

    while (fscanf(data, "%d ", &a) != EOF) 
    { 
     number += a; 
     fprintf(sum, "%d ", number); 
    } 


    return 0;  
} 
相关问题