void escribe()
{
FILE *a = NULL;
a = fopen("C:\\Users\\Usuario\\Desktop\\PRUEBA.txt", "ab");
u_char *o = (u_char*)"BUENOS DIASSS";
fwrite(o, sizeof(u_char), strlen("BUENOS DIASSS"), a);
fclose(a);
a = fopen("C:\\Users\\Usuario\\Desktop\\PRUEBA.txt", "rb");
fseek(a, 0, SEEK_END);
int c = ftell(a);
cout << c;
fseek(a, 0, SEEK_SET);
u_char *d = new u_char[c]();
fread(d, sizeof(u_char), c, a);
cout << (char*)d;
fclose(a);
}
Llamo a esta funcion 6 veces, salida:
CitarBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSS²²²²-¿B-óÙc
Porque hay basura?
Y cada vez va saliendo más.
¿Y el caracter nulo con el que terminan las cadenas, sin el cual no se puede saber cuando acaba? fread no lo pone.
FILE *a = NULL;
a = fopen("C:\\Users\\Usuario\\Desktop\\PRUEBA.txt", "ab");
u_char *o = (u_char*)"BUENOS DIASSS\0";
fwrite(o, sizeof(u_char), strlen("BUENOS DIASSS\0"), a);
fclose(a);
a = fopen("C:\\Users\\Usuario\\Desktop\\PRUEBA.txt", "rb");
fseek(a, 0, SEEK_END);
int c = ftell(a);
cout << c;
fseek(a, 0, SEEK_SET);
u_char *d = new u_char[c]();
fread(d, sizeof(u_char), c, a);
cout << (char*)d;
fclose(a);
BUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSSBUENOS DIASSS²²²²
Mother of god.
Esa cadena no necesita un caracter nulo explícito. Cuando pones "", ya viene con caracter nulo.
La que necesita un caracter nulo es la que se lee del archivo. fread, como dije, no coloca caracteres nulos.
cout << (char*)d;
¿Cómo sabe ostream::operator<< la longitud de la cadena apuntada por d?
Ahhh ok entendí mal jaja gracias XD