Salve , sto cercando di risolvere questo esercizio, ma mi sa proprio di avere delle lacune:
Scrivere in C una funzione void fun(FILE *f1, FILE *f2) che prende come parametri due puntatori a file. f1 `e un file di caratteri e f2 un file di interi. f1 contiene sequenze di caratteri, magari parole senza senso, separate da uno o pi`u spazi. Ogni intero contenuto in f2 dovrebbe corrispondere alla somma delle codifiche ASCII dei caratteri in f1. Chiaramente,il primo intero corrisponde alla prima sequenza di caratteri, il secondo alla seconda e cos`ı fino alla fine. Il metodo deve restituire un intero uguale a: −1 se esistono pi` u sequenze di caratteri in f1 che numeri in f2 o viceversa, 0, se un numero presente in f2 non `e uguale alla somma delle codifiche dei caratteri della sequenza corrispondente, n, ovvero numero di sequenze/interi letti,sei due file sono costruiti in modo corretto.
Ho provato così:
codice:
#include <stdio.h>
#include <string.h>
#define MAX 30
int fun(FILE *f1, FILE *f2){
rewind(f1);
rewind(f2);
char r1,v1;
int t=0,r2,k,v2;
do{
r2 = fread(&v2, sizeof(int), 1, f2);
while(v1=getc(f1)!=' '){
t+=v1;
}
if (r1==0||r2==0) return -1;
if(v2==t) k++;
if(v2!=t) return 0;;
}while(r1>0||r2>0);
return k;
}
int main(){
FILE *f1,*f2;
if((f1=fopen("car.txt","r"))==NULL) printf("errore\n");
if((f2=fopen("num.txt","r"))==NULL) printf("errore");
printf("%d",fun(f1,f2));
return 0;
}