|
232
|
Programación / Programación C/C++ / leer caracteres de un archivo
|
en: 7 Septiembre 2013, 03:10 am
|
Saludos Tengo el siguiente codigo que lee el primer y último carácter de un archivo de texto y los muestra en pantalla.La prueba consiste en mostrar el primer y último carácter correctamente independientemente del tamaño del archivo. El codigo ya pude verificar que funciona para textos pequenios como: "Hola mundo" o "Tres tristes tigres tragaban trigo en un trigal", en el caso del primero me aparece primer caracter :H, ultimo caracter: o, pero si se trata de un archivo de texto un poco grande no me imprime el ultimo caracter y no entiendo por que #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { FILE *fd; int inicio,fin; if((fd = fopen("F:\\archivo1.txt","r"))!=NULL ) { if((inicio = fseek(fd ,0,SEEK_SET )) != 0) printf("No se pudo posicionar el cursor al inicio"); else printf("El caracter que esta al inicio del archivo es: %c\n",fgetc(fd )); if((fin = fseek(fd ,-1,SEEK_END )) != 0) printf("No se pudo posicionar el cursor al final"); else printf("El caracter que esta al final del archivo es: %c\n",fgetc(fd )); } else printf("No se pudo abrir archivo"); return 0; }
el texto en cuestion tiene mas de 100 caracteres de antemano gracias
|
|
|
233
|
Programación / Programación C/C++ / Re: FILE y funcion fwrite()
|
en: 7 Septiembre 2013, 01:34 am
|
Si si estoy en windows el codigo es el siguiente y la linea que me da problemas es donde esta precisamente el fwrite() por el 1 #include <stdio.h> #include <stdlib.h> #define TAM 50 /* Objetivo de la prueba: Leer un archivo de principio a fin leyendo n cantidad de caracteres y repitiendo hasta terminar de leer el archivo, este número debe ser dado por el usuario. La prueba consiste en que no se debe mostrar basura en la pantalla al leer cualquier archivo de texto, además la información debe mostrarse completa. */ int main() { FILE *fo; int cantidad; char buffer[TAM]; if((fo = fopen("F:\\archivo_fuente.txt","r"))!=NULL ) { printf("Dame de cuantos en cuantos caracteres leer: "); { fread(buffer ,sizeof(char),cantidad ,fo ); fwrite(1,sizeof(char),cantidad ,buffer ); } } else printf("No se pudo abrir archivo"); return 0; }
gracias
|
|
|
234
|
Programación / Programación C/C++ / FILE y funcion fwrite()
|
en: 5 Septiembre 2013, 20:03 pm
|
Saludos
Tengo una duda, por que con la funcion fwrite() no puedo imprimir en pantalla?? Hay alguna alternativa para poder hacerlo?? es que cuando pongo fwrite(fo,sizeof(char),sizeof(buffer),1) me aparece que necesito un puntero a FILE en vez de 1
de antemano gracias
|
|
|
235
|
Programación / Programación C/C++ / EOF y archivos
|
en: 4 Septiembre 2013, 21:29 pm
|
Saludos tengo el siguiente programa que me hace una copia de los caracteres que se encuentran en un archivo, el problema es que me imprime basura y creo que tiene que ver con que le puse EOF en el while para cuando se encuentre el fin de linea #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { FILE *fo,*fd; char buffer[50]; fo = fopen("F:\\archivo1.txt","r"); fd = fopen("F:\\archivo2.txt","w"); if(fo == NULL || fd == NULL) printf("Problemas al abrir archivos"); else { while(fread(buffer ,sizeof(char),1,fo )!=EOF ) fwrite(buffer ,sizeof(char),1,fd ); } return 0; }
no se por que me imprime asi de antemano gracias
|
|
|
236
|
Programación / Programación C/C++ / Re: arreglo de punteros y funciones
|
en: 30 Agosto 2013, 16:25 pm
|
saludos rir3760 con las correcciones que hiciste ahora el programa funciona perfectamente, ahora solo me queda una duda, por ejemplo si tengo un puntero int *p;
y le quiero asignar memoria con malloc, tendria que hacer esto:
p = (int *) malloc(10*sizeof(int));
pero me pregunto por que al hacer esto, esta mal
*p = (int*) malloc(10*sizeof(int));
|
|
|
237
|
Programación / Programación C/C++ / Re: Archivos
|
en: 30 Agosto 2013, 15:29 pm
|
Muchas gracias, una ultima pregunta No hay alguna manera de que se pueda utilizar el fopen y pasar su puntero tipo *FILE a la funcion write();???? aunque sean de estandares diferentes EI: juntando mensajes.
ya!! ya consegui que me compilara correctamente, lo unico que hice fue cambiar el write() por el fwrite() y ponerle los parametros adecuados #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { FILE *fd; char cad[]={"Hola mundo"},*ptr; ptr = cad; if((fd = fopen("F:\\archivo_fuente.txt","w"))!=NULL ) else { printf("No se pudo abrir el archivo\n"); } return 0; }
|
|
|
238
|
Programación / Programación C/C++ / Re: Archivos
|
en: 30 Agosto 2013, 00:10 am
|
saludos ahora ya por fin ya me escribe hola mundo en el archivo.txt, pero el fopen lo tuve que cambiar por un simple open, y el problema es que con el fopen yo podia crear el archivo y abrirlo al mismo tiempo, y con el open no puedo, el archivo tiene que existir de antemano para poder abrirlo #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { int fd; if((fd = open("F:\\archivo_fuente.txt",1))>0) write(fd,"hola mundo",10); else { printf("No se pudo crear el archivo\n"); } return 0; }
eso es lo que no entiendo, por que con fopen() no me escribe en el archivo y con open si??? gracias
|
|
|
239
|
Programación / Programación C/C++ / Re: Archivos
|
en: 29 Agosto 2013, 21:35 pm
|
saludos rir3760 todavia no he conseguido el libro pero si encontre algunos tutoriales, si es mas rapida la manera en la que tu lo hiciste pero primero tengo que empezar a trabajar con las funciones basicas, read(), open(), write, etc.. Ahora en este codigo con el fopen(), creo y a la vez abro un archivo.txt para ahi escribir la cadena hola mundo, pero por alguna razon solamente me crea el archivo pero no me escribe la cadena en el archivo.txt #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { FILE *fd; if((fd = fopen("F:\\archivo_fuente.txt","w"))!=NULL ) write(fd,"hola mundo",10); else { printf("No se pudo crear el archivo\n"); } return 0; }
gracias
|
|
|
|
|
|
|