• Viernes 8 de Noviembre de 2024, 20:03

Autor Tema:  problema con string  (Leído 1872 veces)

el_funa

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
problema con string
« en: Lunes 29 de Junio de 2009, 06:06 »
0
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

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: problema con string
« Respuesta #1 en: Lunes 29 de Junio de 2009, 19:04 »
0
¿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.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

el_funa

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: problema con string
« Respuesta #2 en: Lunes 29 de Junio de 2009, 20:14 »
0
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

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: problema con string
« Respuesta #3 en: Lunes 29 de Junio de 2009, 20:42 »
0
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.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

el_funa

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: problema con string
« Respuesta #4 en: Lunes 29 de Junio de 2009, 22:46 »
0
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.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: problema con string
« Respuesta #5 en: Lunes 29 de Junio de 2009, 23:23 »
0
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.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

el_funa

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: problema con string
« Respuesta #6 en: Lunes 29 de Junio de 2009, 23:54 »
0
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

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: problema con string
« Respuesta #7 en: Martes 30 de Junio de 2009, 10:05 »
0
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.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

el_funa

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: problema con string
« Respuesta #8 en: Miércoles 1 de Julio de 2009, 03:35 »
0
:O  filete ahora me funciona el codigo gracias  : :D

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: problema con string
« Respuesta #9 en: Miércoles 1 de Julio de 2009, 08:03 »
0
De nadas  B)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.