SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: el_funa en Lunes 29 de Junio de 2009, 06:06

Título: problema con string
Publicado por: el_funa en Lunes 29 de Junio de 2009, 06:06
bueno miren tengo que hacer este problema el cual no me puede funcionar por 2 pequeños problemas...

miren es este problema

1.   Crear un programa en c que cree un archivo que contenga texto como un cuento ingresado por el usuario, el nombre del archivo debe ser ingresado por el usuario, el máximo de caracteres será de 30.000 caracteres, el programa debe permitir escribir el archivo, ver el archivo y copiar el archivo a uno llamado copia.txt.

Código: C
  1. #include <stdio.h>>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int la;
  7.  
  8. printf("[1] Ingrese el numero para eligir la opcionn");
  9. printf("[2] Ingresar nuevo texton");
  10. printf("[3] Ver el texton");
  11. printf("[4] Copiar el texto en texto.txtn");
  12. printf("[5] SALIRn");
  13. scanf("%d",&la);
  14. switch(la){
  15.  
  16.     case 1:
  17. FILE *g1;
  18. char frase[30000];
  19. g1=fopen("frase.txt","w");
  20. printf("Ingrese texto: n");
  21. scanf("%s",&frase);
  22. fputs(frase,g1);
  23. fclose(g1);
  24.             break;
  25.            
  26.     case 2:
  27. FILE *g2;
  28. char frase[30000];
  29. g2=fopen("frase.txt","r");
  30. if(g2==NULL){
  31. printf("EL ARCHIVO NO EXISTEn");
  32. }else{
  33. while(!feof(g2)){
  34. fgets(frase,30000,g2);
  35. printf("%s",frase);
  36. fputs(frase,g2);
  37. fclose(g2);
  38.             break;
  39.            
  40.     case 3:
  41. FILE *f1,*f2;
  42. char frase[30000];
  43. f1=fopen("frase.txt","r");
  44. f2=fopen("copia.txt","w");
  45. if(f1==NULL){
  46. printf("EL ARCHIVO NO EXISTEn");
  47. }else{
  48. while(!feof(f1)){
  49. fputs(fgets(frase,30000,f1),f2);
  50. }
  51. }
  52. fclose(f1);
  53. fclose(f2);
  54.             break;
  55.            
  56.     case 4: exit(0);
  57.             break;
  58.            
  59.     default:
  60.    
  61.  
  62.         printf("ERROR: ingrese el numero correcton");
  63.         break;
  64. }
  65.         }
  66.                 system("PAUSE");
  67.     return EXIT_SUCCESS;
  68. }
  69. }
  70.  
  71.  

bueno es pero que me traten de ayudar o solucionar este problema. sl2
Título: Re: problema con string
Publicado por: Eternal Idol en Lunes 29 de Junio de 2009, 19:04
¿Y cual es el problema exactamente? Si saco a frase de cada uno de los cases  y la defino una sola vez antes compila, no lo probe.
Título: Re: problema con string
Publicado por: el_funa en Lunes 29 de Junio de 2009, 20:14
mira son los problemas que me causa el string   :brickwall: (  char  frase[30000]   )

mira te dejo una foto para que veas lo que me dice el problema

pd: el programa que utilizo es el dev c++

ese es el link :P
fotosupload.com/mostrar.php?imagen=FuD95263_sdfsdfsfsd.jpg
Título: Re: problema con string
Publicado por: Eternal Idol en Lunes 29 de Junio de 2009, 20:42
Si, ese problema ya te dije como arreglarlo arriba ... mas especifico, despues de:

scanf("%d",&la);
pones
char frase[30000];

y borras frase en cada uno de los case.
Título: Re: problema con string
Publicado por: el_funa en Lunes 29 de Junio de 2009, 22:46
lo ise cm me dijiste pero aun asi tube problemas :/

despues probe cn este codigo que es un poko mas facil pero todavia me da problemas...
el dev c++ me dice que tengo este problema storage size of 'string' isn't known y no se cm solucionarlo :argh:




 
Código: C++
  1. #include <stdio.h>>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int main()
  6. {
  7. char* leer_stdin(char string[30000], int largo);
  8.  
  9. char string[];
  10.     {
  11.           int i;
  12.           int largo=30000;
  13.          
  14.           setbuf( stdin, NULL );
  15.           fgets (string, largo , stdin);
  16.           for(i=0; i<largo; i++)
  17.               if(string[i]=='n') string[i]='';
  18.           return string;
  19.           }
  20. }
  21.  
  22. {
  23.  
Título: Re: problema con string
Publicado por: Eternal Idol en Lunes 29 de Junio de 2009, 23:23
No, habras hecho algo mal ... lo acabo de probar y va sin problemas:

Código: C++
  1. #include <stdio.h>>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. int la;
  7.  
  8. printf("[1] Ingrese el numero para eligir la opcionn");
  9. printf("[2] Ingresar nuevo texton");
  10. printf("[3] Ver el texton");
  11. printf("[4] Copiar el texto en texto.txtn");
  12. printf("[5] SALIRn");
  13. scanf("%d",&la);
  14. char frase[30000];
  15. switch(la){
  16.  
  17.     case 1:
  18. FILE *g1;
  19.  
  20. g1=fopen("frase.txt","w");
  21. printf("Ingrese texto: n");
  22. scanf("%s",&frase);
  23. fputs(frase,g1);
  24. fclose(g1);
  25.             break;
  26.            
  27.     case 2:
  28. FILE *g2;
  29.  
  30. g2=fopen("frase.txt","r");
  31. if(g2==NULL){
  32. printf("EL ARCHIVO NO EXISTEn");
  33. }else{
  34. while(!feof(g2)){
  35. fgets(frase,30000,g2);
  36. printf("%s",frase);
  37. fputs(frase,g2);
  38. fclose(g2);
  39.             break;
  40.            
  41.     case 3:
  42. FILE *f1,*f2;
  43.  
  44. f1=fopen("frase.txt","r");
  45. f2=fopen("copia.txt","w");
  46. if(f1==NULL){
  47. printf("EL ARCHIVO NO EXISTEn");
  48. }else{
  49. while(!feof(f1)){
  50. fputs(fgets(frase,30000,f1),f2);
  51. }
  52. }
  53. fclose(f1);
  54. fclose(f2);
  55.             break;
  56.            
  57.     case 4: exit(0);
  58.             break;
  59.            
  60.     default:
  61.    
  62.  
  63.         printf("ERROR: ingrese el numero correcton");
  64.         break;
  65. }
  66.         }
  67.                 system("PAUSE");
  68.     return EXIT_SUCCESS;
  69. }
  70. }
  71.  
Título: Re: problema con string
Publicado por: el_funa en Lunes 29 de Junio de 2009, 23:54
ahora me salio bueno pero tengo un pequeño problema que lo que necesito para el programa es que grabe 30000 caracteres y solamente me graba hsata el 1º espacio :/ ahi cm lo podria solucionar es ahi cuando empese  colocar el 2 codigo que me solucionaria eso...   sl2
Título: Re: problema con string
Publicado por: Eternal Idol en Martes 30 de Junio de 2009, 10:05
Es por usar scanf ...

En donde tenes:
Código: C++
  1. scanf("%d",&la);
  2.  

cambialo por:
Código: C++
  1. char linea[80];
  2. fgets(linea, sizeof(linea), stdin);
  3. sscanf(linea, "%d", &la);
  4.  

Y:
Código: C++
  1. scanf("%s",&frase);
  2.  

por:
Código: C++
  1. fgets(frase, sizeof(frase), stdin);
  2.  
Título: Re: problema con string
Publicado por: el_funa en Miércoles 1 de Julio de 2009, 03:35
:O  filete ahora me funciona el codigo gracias  : :D
Título: Re: problema con string
Publicado por: Eternal Idol en Miércoles 1 de Julio de 2009, 08:03
De nadas  B)