/* * Lê um vetor de um arquivo texto. O primeiro inteiro lido é * a dimensão do vetor. * * Escreve o vetor em um arquivo de saída binário. * * Lê um vetor do arquivo binário e o escreve em um arquivo texto. */ #include #include int *le_vetor_texto(int *n) { FILE *fr; int *v; int i; fr = fopen ("v-in.txt", "r"); if (fr == NULL) { perror("v-in.txt: "); exit(-1); /* Abandona o programa */ } fscanf(fr, "%d", n); v = (int *) malloc (*n * sizeof(int)); for (i = 0; i < *n; i++) fscanf(fr, "%d", &v[i]); fclose(fr); return v; } int *le_vetor_binario(int *n) { FILE *fr; int *v; fr = fopen ("v.bin", "r"); if (fr == NULL) { perror("v.bin: "); exit(-1); /* Abandona o programa */ } fread(n, sizeof(int), 1, fr); v = (int *) malloc (*n * sizeof(int)); fread(v, sizeof(int), *n, fr); fclose(fr); return v; } void escreve_vetor_texto(int *v, int n) { FILE *fw; int i; fw = fopen ("v-out.txt", "w"); if (fw == NULL) { perror("v-out.txt "); exit(-1); /* Abandona o programa */ } fprintf(fw, "%d\n", n); /* Dimensão do vetor */ for (i = 0; i < n; i++) fprintf(fw, "%d\n", v[i]); fclose(fw); } void escreve_vetor_binario(int *v, int n) { FILE *fw; fw = fopen ("v.bin", "w"); if (fw == NULL) { perror("v.bin "); exit(-1); /* Abandona o programa */ } /* Dimensão do vetor */ fwrite(&n, sizeof(int), 1, fw); fwrite(v, sizeof(int), n, fw); fclose(fw); } int main() { int *v1, *v2; int n1, n2; v1 = le_vetor_texto(&n1); escreve_vetor_binario(v1, n1); v2 = le_vetor_binario(&n2); escreve_vetor_texto(v2, n2); free(v1); free(v2); return 0; }