C/Visual C - Copiar estilo de letras

 
Vista:

Copiar estilo de letras

Publicado por Jose Mª (1 intervención) el 15/03/2007 21:44:16
Existe alguna manera de copiar de un fichero a otro por medio de visual c en el que el fichero destino conserve el estilo del original,para copiar utilizo esto

void guardar(char cadena[100])
{

fputs(cadena, ptcopia);
fputs("\n",ptcopia);

}

void leer(void)
{
char letra[10];
char cadena[100]="", nombrefile;
FILE *ptarchivo;

//strcpy(nombrefile,mod700);
ptarchivo=fopen(mod700, "r+");
while(!feof(ptarchivo))
{
fgets(letra,2,ptarchivo);
while ( (strcmp(letra," ")) && !feof(ptarchivo) ) {
strcat(cadena,letra);
fgets(letra,2,ptarchivo);
}
printf("Palabra cogida %s\n",cadena);
guardar(cadena);
strcpy(cadena,"");
}

fclose(ptarchivo);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Copiar estilo de letras

Publicado por nacho (12 intervenciones) el 15/03/2007 23:46:33
¿Por qué lees de dos bytes en 2 bytes?

Si quieres generar todo el fichero idéntico al original, ¿no sería mejor leer byte a byte, sin reconstruir cadenas ni nada por el estilo?

Algo así:

while (! feof(fichOrg) )
{
letra = fgetc(fichOrg);
fputc(letra, fichDest);
}

Podrías incluso leerlo como fichero binario, aunque realmente sea de texto:

while (! feof(fichOrg) )
{
/* Leo datos: cada uno de 1 byte, todos los que me caben */
cantidad = fread( buffer, 1, sizeof(buffer), fichOrg);
/* Escribo tantos como haya leÝdo */
fwrite(buffer, 1, cantidad, fichDest);
}

Más detalles, aquí:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=322
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar estilo de letras

Publicado por Jose Mº (1 intervención) el 16/03/2007 08:08:49
En lo de los bytes tienes razon pero la cosa es que tengo que leer el fichero buscando unas palabras concrestas, es por eso por lo que voy leyendo y componiendo las palabras cuando me encuentro el espacio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar estilo de letras

Publicado por Nelek (816 intervenciones) el 16/03/2007 10:50:00
Entonces hazlo de otra manera, con dos variables BYTE, anterior y actual, de manera que:

BYTE anterior = 0, actual = 0;
WORD palabra = 0;

for (int i = 0; i < limite; i++)
{
anterior = actual; //tienes el valor de la ultima pasada;
actual = lectura_del_byte_del_fichero;

palabra = (actual * 256);
palabra = palabra + anterior;

if (palabra == miVariableABuscar)
//Haces lo que quieres;
else
//Haces otra cosa;
}

Aqui tienes la idea, solo tienes que adaptarla a lo tuyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar estilo de letras

Publicado por nacho (12 intervenciones) el 17/03/2007 17:33:53
Sigo sin tener claro qué pretendes, pero si es un fichero de "texto puro" puedes leer cada frase entera con "fgets" y luego comprobar si contiene la palabra que buscas con "strstr"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Copiar estilo de letras

Publicado por Nelek (816 intervenciones) el 16/03/2007 07:57:30
Hola,

En referencia a lo de las letras... Si estas usando VC++... has probado a usar la clase CFont?? Al guardar puedes mandar el formato de la fuente al fichero a modo de "header" y luego, al leer el fichero, estableces la fuente antes de leer la informacion y presentarla.

La estructura miembro donde se guarda el formato es:

typedef struct tagLOGFONT { // lf
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;

Espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar