Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Fera Core en 11 Abril 2016, 00:51 am



Título: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Fera Core en 11 Abril 2016, 00:51 am

Gracias por la ayuda. :D

aqui tengo el programa :
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <fstream.h>
  5.  
  6. void main(void)
  7. {
  8.     FILE *pf; // declaro mi archivo
  9.     char *nombre;
  10.     clrscr();
  11. puts("Ingrese el nombre del archivo que desea abrir";
  12. gets(nombre);
  13. strcat(nombre, ".txt");
  14.   pf=fopen("c:\\.txt","r");
  15.  
  16. if(pf==NULL)
  17. {
  18. perror("Error al abrir el archivo.doc");
  19. getch();
  20. }
  21.     fclose(pf);
  22. }
  23.  

[MOD] Para publicar codigo usa etiquetas GeSHi, gracias.



Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: MAFUS en 11 Abril 2016, 16:19 pm
Si es C no uses fstream.
Intenta no usar conio.h sólo es de Borland, cunado en tu trabajo no tengas TC++ estarás vendido.
En cambio, si es C++ intenta usar las librerías de C++ en vez de C.
Usar TC++ sí o sí. Sabía que en la facultad, almenos el C, lo están destrozando. Por eso a la gente no le gusta.


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Gunhack en 12 Abril 2016, 04:46 am
Hola soy estudiante en ing. de computación no se si alguien les ha pasado que en la escuela le enseñan lo basico y despues te dejan hacer algo avanzado que ni siquiera en libros puedo encontrar algo de información.  :-(

Bueno eh estado intentando hacer una tarea que solicite al usuario el documento de word (.doc)  a abrirlo desde una usb. Y de eso lo que esta en su contenido hay que crear un respaldo en texto.
 
Lo ultimo es lo de menos, lo que no logro es cambiar la extensión de doc a txt, para abrir el archivo , porque solo se pueden abrir archivos en txt y el bin entonces pense que lo mejor es cambiar la extensión para abrirlo.

Lo estoy haciendo en tubo c++, el profe no me deja utilizar otro compilador. Eh usado dev c++ pero me da muchos errores en las librerias conio, fstream ,windows y muchas mas , aparte que no me deja crear graficos. Si conocen uno mejor que estos 2 y que sistema operativo deberia de usar . por favor comentarlo ya que turbo c no me gusta mucho tiene muchos bugs en w7 y en dev c muchas librerias no funcionan.



El problema no se refiere a que el programa haga la conversión automáticamente, lo que pide es que el usuario mismo haga su copia del documento .doc a .txt para poder leerlo ahora sí desde el programa,ya que por sí solo C o C++ no pueden leer archivos de word, o almenos no que yo sepa... Te comento tu código para decirte en que estás mal...  :P

Código
  1. FILE *pf; // declaro mi archivo
  2. char *nombre;
  3. clrscr();

En "char* nombre " No estás creando más que un apuntador y es imposible copiarle algo, tendrías que darle un tamaño específico...

Código
  1. char nombre[50];

Código
  1. if(pf==NULL)
  2. {
  3.  perror("Error al abrir el archivo.doc"); // ".txt!!! xD
  4.  getch();
  5. }



Para leerlo, ya teniendo el archivo .txt yo haría lo siguiente...

Código
  1. FILE *pf;
  2. F = fopen(Nombre, "r");
  3. if(F == NULL) {
  4.  
  5.   printf("Error al abrir el archivo!");
  6.   return 0;
  7. }
  8. printf("Texto en: %s\n\n", Nombre);
  9.  
  10. while(!feof(F)) {
  11.  
  12.    char c = getc(F);
  13.    printf("%c", c);
  14. }
  15.  
  16. fclose(F);

Y lo implementaría de esta manera  :D

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <iostream>
  4. #include <fstream>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8.  
  9. void limpriarCadena(char cad[], int n) {
  10.  
  11.    for(int i = 0; i < n; i++) {
  12.  
  13.        cad[i] = '\0';
  14.    }
  15. }
  16.  
  17. int main() {
  18.  
  19.    char Unidad[3];
  20.    char Ruta[150];
  21.    char RutaAbsoluta[150];
  22.    char NombreArchivo[50];
  23.    FILE* F;
  24.  
  25.    do {
  26.        system("cls");
  27.        limpriarCadena(Unidad, 3);
  28.        limpriarCadena(Ruta, 150);
  29.        limpriarCadena(RutaAbsoluta, 150);
  30.        limpriarCadena(NombreArchivo, 50);
  31.  
  32.        printf("-Ingresa la letra de la unidad de tu dispositivo(C,D,F...)\n-> ");
  33.        scanf("%c", &Unidad[0]);
  34.        strcat(Unidad, ":\\");
  35.        strcpy(RutaAbsoluta, Unidad);
  36.  
  37.        printf("\n-Ingresa la ruta del archivo(deja en blanco si esta en la raiz)\n-> %s", Unidad);
  38.        while(getchar()!='\n');
  39.        gets(Ruta);
  40.        if(strlen(Ruta)!=0) {
  41.  
  42.            strcat(RutaAbsoluta, Ruta);
  43.            strcat(RutaAbsoluta, "\\");
  44.        }
  45.  
  46.        printf("\nIngresa el nombre del archivo a abrir: ");
  47.        gets(NombreArchivo);
  48.        strcat(NombreArchivo, ".txt");
  49.        strcat(RutaAbsoluta, NombreArchivo);
  50.  
  51.        F = fopen(RutaAbsoluta, "r");
  52.        if(F == NULL) {
  53.  
  54.            printf("\n\nError al abrir el archivo! Intenta de nuevo...\nPresiona enter para continuar...");
  55.            while(getchar()!='\n');
  56.        }
  57.  
  58.    } while(F == NULL);
  59.  
  60.    system("cls");
  61.  
  62.    printf("Texto en: %s\n\n", RutaAbsoluta);
  63.  
  64.    while(!feof(F)) {
  65.  
  66.        char c = getc(F);
  67.        printf("%c", c);
  68.    }
  69.  
  70.    fclose(F);
  71. }
  72.  

(http://i67.tinypic.com/2zi0dgy.jpg)

(http://i64.tinypic.com/savev7.jpg)


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Fera Core en 13 Abril 2016, 02:44 am
Si es C no uses fstream.
Intenta no usar conio.h sólo es de Borland, cunado en tu trabajo no tengas TC++ estarás vendido.
En cambio, si es C++ intenta usar las librerías de C++ en vez de C.
Usar TC++ sí o sí. Sabía que en la facultad, almenos el C, lo están destrozando. Por eso a la gente no le gusta.

si es c++, cuales son las librerias c++ , ami me han enseñado esas librerias para c++ y c


Título: .
Publicado por: Fera Core en 13 Abril 2016, 02:54 am
.


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Fera Core en 13 Abril 2016, 03:23 am
Muchas gracias Gunhack por ayudar a :D,  solo nesecitaba orientacion y consejos, ya que estas tareas son mas avanzado de lo que me enseñan.
Y aunque me hubieran acosenjado no hubiera entendido en su totalidad hay muchas cosas que no habia visto  :o :o :o :o, Ya solo tengo que entender el codigo que hiciste para aprender de ello.

voy en tercero y esto de estructura de datos y archivos. Son algo complicados ya veo porque nadie le habia entregado esa tarea al profe.En internet solo hay informacion basica sobre archivos.  

otra cosa en turbo c++ no me corre , solo corregi algunos detalles que conozco como que la libreria iostream y fstream no tengan la .h de encabezado XD
y en turbo c para limpiar pantalla es clrscr();

Si nesecitas un dibujo ,  un logo o una resmasterizacion  me mandas  un mensaje a facebook "Fera Core" ahi le hayo mas aunque estar programando eh perdido algo de practica.

por la escuela no eh tenido chance de hacer ilustraciones por eso tengo esos, pero ya en abril salgo de vacaciones ahi te puedo regresar el favor
aqui mi deviant art: http://feracore.deviantart.com/

Gracias por tu ayuda y tiempo :D


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Fera Core en 13 Abril 2016, 04:28 am
De hecho el objetivo es abrir un archivo doc XD
para eso nesecito convertirlo a txt y abre, despues hacer el respaldo en txt :D
el programa funciona  bien en dev c, busca los archivos de texto perfectamente. Que es mejor que turbo c++ para programar c++???
 
esta tarea es obligatorio usar turbo c++ , pero no me gusta turbo c.


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Gunhack en 14 Abril 2016, 06:55 am
Muchas gracias Gunhack por ayudar a :D,  solo nesecitaba orientacion y consejos, ya que estas tareas son mas avanzado de lo que me enseñan.
Y aunque me hubieran acosenjado no hubiera entendido en su totalidad hay muchas cosas que no habia visto  :o :o :o :o, Ya solo tengo que entender el codigo que hiciste para aprender de ello.

voy en tercero y esto de estructura de datos y archivos. Son algo complicados ya veo porque nadie le habia entregado esa tarea al profe.En internet solo hay informacion basica sobre archivos.  

otra cosa en turbo c++ no me corre , solo corregi algunos detalles que conozco como que la libreria iostream y fstream no tengan la .h de encabezado XD
y en turbo c para limpiar pantalla es clrscr();

Si nesecitas un dibujo ,  un logo o una resmasterizacion  me mandas  un mensaje a facebook "Fera Core" ahi le hayo mas aunque estar programando eh perdido algo de practica.

por la escuela no eh tenido chance de hacer ilustraciones por eso tengo esos, pero ya en abril salgo de vacaciones ahi te puedo regresar el favor
aqui mi deviant art: http://feracore.deviantart.com/

Gracias por tu ayuda y tiempo :D

De nada jaja para eso estamos! Y no te preocupes lo hacemos por amor a arte :) Y si, olvidé mencionar que no estaba usando turbo c pero supiste arreglarlo  ;D

De hecho el objetivo es abrir un archivo doc XD
para eso nesecito convertirlo a txt y abre, despues hacer el respaldo en txt :D
el programa funciona  bien en dev c, busca los archivos de texto perfectamente. Que es mejor que turbo c++ para programar c++???
 
esta tarea es obligatorio usar turbo c++ , pero no me gusta turbo c.

Te digo que en c++ no se puede, de verdad x3 o bueno por lo menos no encontré nada, si lo haces, hasmelo saber!  :P
Yo uso codeblocks para programar en c y c++ no sé que tan bien recomendado esté pero a mi me sirve muy bien y me siento cómodo xD


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: HardForo en 15 Abril 2016, 20:13 pm
Claro que puedes abrir y leer un archivo DOC / DOCX en C / C++, hay muchas librerias....


http://docxfactory.com/

y para .NET tienes esta:

https://github.com/WordDocX/DocX


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Gunhack en 15 Abril 2016, 23:24 pm
Claro que puedes abrir y leer un archivo DOC / DOCX en C / C++, hay muchas librerias....


http://docxfactory.com/

y para .NET tienes esta:

https://github.com/WordDocX/DocX

Gracias hermano, yo no encontré nada así  :(


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Fera Core en 20 Abril 2016, 03:27 am
Bueno en dev c neceitas un sistem( rename());  y la libreria windows .h
y poner abajo del sistem rename  usan:
gets(NombreArchivo);
strcat(NombreArchivo, ".txt");// ahora texto
strcat(RutaAbsoluta, NombreArchivo);

es la unica manera que pude abrir un archivo en devc pero la tarea era en turbo c++ , solo que no abre archivos en otras unidades externos solo de los discos locales
----------------------------------------------------------------

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5.  
  6.  
  7. void limpriarCadena(char cad[], int n) {
  8.  
  9.    for(int i = 0; i < n; i++) {
  10.  
  11. cad[i] = '\0';
  12.    }
  13. }
  14.  
  15. int main() {
  16.  
  17.    char Unidad[3];
  18.    char Ruta[150];
  19.    char RutaAbsoluta[150];
  20.    char NombreArchivo[50];
  21.    char c=' ';
  22.    FILE *F,*N;
  23.  
  24.  
  25. do {
  26. clrscr();//limpiar la ubicacion cada vez que se cicle
  27. limpriarCadena(Unidad, 2);
  28. limpriarCadena(Ruta, 150);
  29. limpriarCadena(RutaAbsoluta, 150);
  30. limpriarCadena(NombreArchivo, 50);
  31.  
  32. printf("\n -Ingresa la letra de la unidad de tu dispositivo(C,D,F...):\n-> ");
  33. scanf("%c", &Unidad[0]);
  34. strcat(Unidad, ":\\");
  35. strcpy(RutaAbsoluta, Unidad);
  36.  
  37. printf("\n -Ingresa la ruta del archivo(deja en blanco si esta en la raiz):\n-> %s", Unidad);
  38. while(getchar()!='\n');
  39. gets(Ruta);
  40. if(strlen(Ruta)!=0) {
  41.  
  42.    strcat(RutaAbsoluta, Ruta);
  43.    strcat(RutaAbsoluta, "\\");
  44. }
  45.  
  46. printf("\n Ingresa el nombre del archivo de word (doc) que desea abrir: \n");
  47. gets(NombreArchivo);
  48. strcat(NombreArchivo, ".doc");
  49. strcat(RutaAbsoluta, NombreArchivo);
  50.  
  51.  
  52. F = fopen(RutaAbsoluta, "r");
  53.  
  54. if(F == NULL) {
  55.  
  56.       printf("\n\n Error al abrir el archivo! Intenta de nuevo...\nPresiona enter para continuar...");
  57. while(getchar()!='\n');
  58.      }
  59.  
  60.  } while(F == NULL);
  61.  
  62.  clrscr();
  63.  
  64.  printf("\n  Texto en:  %s\n\n", RutaAbsoluta);  // imprime la ruta del archivo
  65. N = fopen("Respaldo.txt", "w");
  66.  
  67. printf("El respaldo se creo correctamente ");
  68. while(!feof(F)) {
  69.  
  70.       c = getc(F);
  71. fprintf(N,"%c",c);
  72.       printf("%c", c);
  73.  
  74. }
  75.       puts("Copia de seguridad creada con exito");
  76.       fclose(F);//imprime el contenido del archivo
  77.       fclose(N);
  78.       //empieza respaldo
  79.  
  80.  
  81.  
  82.  
  83. getch();
  84.  
  85. return 0;
  86. }






MOD EDIT: Usar etiquetas GeSHi y no hacer doble post.


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: MAFUS en 21 Abril 2016, 09:30 am
La verdad: te has complicado muchísimo a la hora de adquirir la ruta del archivo.
¿No puedes hacer que el usuario la entre de una vez?


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: Fera Core en 27 Abril 2016, 08:41 am
tenia que buscar un archvo doc en una usb.


Título: Re: Tengo un problema con un programa que no encuentro la informacion
Publicado por: MAFUS en 27 Abril 2016, 11:46 am
Pero la ruta la puedes escribir directamente y no tener que ir trozo a trozo. Así podrias usar hasta las rutas relativas y el programa en script msdos o de powershell.