Cierto, no me había fijado con cout. Me había quedado con la forma de tratar los archivos. Así que es una mezcla.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú#include <stdio.h>
#include <stdlib.h>
char *arch_original = "original.txt";
char *arch_copia = "copia.txt";
int menu() {
int retval;
puts("1. Copiar a en b tal cual");
puts("2. Copiar a en b pero invirtiendo linea a linea");
puts("3. Copiar a en b pero invirtiendo todo el orden");
puts("0. Salir");
puts("");
printf("Eleccion: ");
scanf("%d", &retval);
return retval;
}
void reiniciar_archivo() {
FILE *fp = fopen(arch_original, "wt");
fprintf(fp, "12345\nabcde");
fclose(fp);
}
void opcion_1() {
int c;
FILE *original = fopen(arch_original, "rt");
FILE *copia = fopen(arch_copia, "wt");
c = fgetc(original);
while(!feof(original)) {
fputc(c, copia);
c = fgetc(original);
}
fclose(original);
fclose(copia);
}
void opcion_2() {
char buffer[4096];
char c;
int tam;
FILE *original = fopen(arch_original, "rt");
FILE *copia = fopen(arch_copia, "wt");
c = fgetc(original);
while(!feof(original)) {
ungetc(c, original);
fscanf(original, "%4096[^\n]%n", buffer, &tam);
for(int i=tam-1; i>=0; --i)
fputc(buffer[i], copia);
if((buffer[0] = fgetc(original)) == '\n')
fputc(buffer[0], copia);
else
ungetc(buffer[0], original);
c = fgetc(original);
}
fclose(original);
fclose(copia);
}
void opcion_3() {
int c;
FILE *original = fopen(arch_original, "rt");
FILE *copia = fopen(arch_copia, "wt");
fseek(original, -1, SEEK_END);
c = fgetc(original);
while(ftell(original)>1) {
fputc(c, copia);
fseek(original, c=='\n'? -3 : -2, SEEK_CUR);
c = fgetc(original);
}
fputc(c, copia);
fclose(original);
fclose(copia);
}
int main() {
int n;
do {
reiniciar_archivo();
n = menu();
switch(n) {
case 0:
break;
case 1:
opcion_1();
break;
case 2:
opcion_2();
break;
case 3:
opcion_3();
break;
default:
puts("La opcion elegida no es correcta.");
}
// Mira el resultado en el archivo copia.txt
} while(n);
}
while (bucle = 0)
Estás asignando, no comparando.