Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - niñoAtómico

#11
Hola Vangodp:

Lo que yo quería decir es que estuve viendo programas avanzados y no usan las mismas expresiones que uso yo, como switch case, do while, etc. Las usan pero de otra forma. Y no entiendo cómo aprender eso. Sé qué es otro nivel, y no sé con qué empezar para avanzar a esa etapa...

Saludos!!! :)
#12
Hola:
Si, estuve leyendo el post de LittleHorse sobre lo que no hay que hacer,y efectivamente encontré el gets() como una función inestable. Otro tema, ya que veo que está en un nivel más alto que yo:

Necesito pasar a hacer otros programas más compejos. ¿Qué libro o site me recomienda?. Quiero programar algo que vaya más allá de mostrar texto en pantalla, o de resolver equaciones, etc. Mi pregunta es: ¿Cuál es el siguiente paso? ¿Qué me recomienda? Estoy aprendiendo del libro "Cómo programar en C, C++ y Java", de deitel y Deitel (además de la facu), pero como aprendí ahora tiene estos errores como el gets() o poner un system("pause"), y lo que yo quiero es lograr hacer programas que puedan ser utilizados por personas. De lo que hablo es de que nadie me va a comprar un programa que saque por pantalla la serie de Fibonacci, o sume dos matrices, y esas cosas.

Gracias!!! :D
#13
Son puntos de vista, para resolver el ejercicio me sirvió el gets(), veo que sacan mucho de wikipedia tambien, no se guíen tanto por eso. Leí la nota sobre lo que no hay que hacer en C, por ejemplo system ("pause"),  porque no es portable, pero creo que cuando uno abre el IDE pone que va a hacer un programa para MS-DOS, poner un getc() para hacer una pausa me parece medio pelo, obviamente son visiones de gente que está más curtida en este asunto. Depende de lo que uno quiera hacer sirve o no el gets(); hay que saber manejarse con todas las funciones, me parece. Obviamente saben muchísimas cosas, me vino re bien el texto del link del artículo. Que bueno que se copen explicando estas cosas. A veces en la facu algún programa tira un símbolo raro o funciona mal y ni les importa. Gratzie... ;-)

Saludos...
#14
Hola, acabo de recibir mi nota del primer parcial de programación II, y tuve un error muy boludo, ahora que lo entiendo.

No me funcionaba el gets en el siguiente código: (en C):
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void textocrea();
void textolee();
int main() {


//char text [1000];
//char entrada [1000];
int opcion = 0;
printf("Seleccione la opcion:\n");
printf("Opcion 1) crear texto en archivo\nOpcion 2) Leer archivo\n");
scanf("%i", &opcion);
switch(opcion){
case 1:
  textocrea();
break;
case 2://funciona!!!
       textolee();
       break;
default:
   printf("Selecciono una opcion no existente\n");
break;
}

return 0;
}
 void textocrea()
{
FILE *vfile;
char caracter[1000];
vfile = fopen("d:/texto.txt", "w");
if(vfile==NULL){
  printf("Error al crear archivo\n");
 }

printf("Ingrese el texto\n");
gets(caracter);
fputs(caracter, vfile);
fclose(vfile);    

 }
void textolee()
{
FILE *vfile;
char caracter [1000];
vfile = fopen("d:/texto.txt", "r");
if(vfile==NULL){
  printf("Error al crear archivo\n");
 }
 while(!feof(vfile)){
 
  fread(&caracter, sizeof(caracter), 1, vfile);
 
  printf("%s", caracter);
   }

fclose(vfile);




}


Entonces lo resolví poniendo un scanf, pero como sabemos el scanf no lee espacios, y si uno quiere guardar un texto tiene que leer espacios. para esto usé la fórmula:
scanf( " %[^\n]",&caracter );

para que guarde en la variable caracter el texto. Pero no era lo que el profe quería. La respuesta para que funcione el gets es así:
fflush(stdin);
gets(caracter);


Y el código completo que tiene dos opciones, una crear un archivo y la otra leerlo, sería así (sin errores):

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

void textocrea();
void textolee();
int main() {


//char text [1000];
//char entrada [1000];
int opcion = 0;
printf("Seleccione la opcion:\n");
printf("Opcion 1) crear texto en archivo\nOpcion 2) Leer archivo\n");
scanf("%i", &opcion);
switch(opcion){
case 1:
  textocrea();
break;
case 2://funciona!!!
       textolee();
       break;
default:
   printf("Selecciono una opcion no existente\n");
break;
}

return 0;
}
 void textocrea()
{
FILE *vfile;
char caracter[1000];
vfile = fopen("d:/texto.txt", "w");
if(vfile==NULL){
  printf("Error al crear archivo\n");
 }

printf("Ingrese el texto\n");
fflush(stdin);
gets(caracter);
fputs(caracter, vfile);
fclose(vfile);    

 }
void textolee()
{
FILE *vfile;
char caracter [1000];
vfile = fopen("d:/texto.txt", "r");
if(vfile==NULL){
  printf("Error al crear archivo\n");
 }
 while(!feof(vfile)){
 
  fread(&caracter, sizeof(caracter), 1, vfile);
 
  printf("%s", caracter);
   }

fclose(vfile);




}


Y si quieren que quede mejor le ponen un system("pause"); para que no se cierre si lo ejecutan individualmente.


Eso es todo, quería compartir esto para que no cometan este error tan bolu, ojalá nunca les pase...  :silbar: :silbar:


Saludos...

#15
Muy buena la explicación para mi que soy pequeño y sé poco, muchas gracias!!! ;-)
#16
Tengo dos libros muy copados de Deitel y deitel sobre programación que me dan en la facu, pero lo del void no estaba bien explicado...   :-[ Que hace el minicódigo?

Saludos...
#17
Hola: Me bajé este libro Gray Hat Hacking y está muy bueno, lo estoy leyendo. Les paso el link, lo subí a mediafire...

http://www.mediafire.com/download/5dvo8zkco5gej77/Gray_Hat_Hacking%2C_Third_Edition.rar

Es un libro sobre hacking muy copado. Está en inglés pero si le ponen onda van a entender todo...



Saludos... :rolleyes:
#18
Muchísimas gracias, era algo simple que nadie me sabía decir.

Buena onda!!!  ;-)

#19
Gracias!!! Te copas y escribis un ejemplo?

Y un misterio es por qué no funciona con gets y sí con scanf... Si lo prueban con gets devuelve cero y no pide el string, es raro...

Gracias!!!
#20
Hola Gente:

Me dieron esta consigna:

Crear un programa en C que tenga un menú, de dos opciones. crear archivo y leer archivo. Lo resolví así:

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int textocrea();
int textolee();
int main() {
   
   
   //char text [1000];
   //char entrada [1000];
   int opcion = 0;
   printf("Seleccione la opcion:\n");
   printf("Opcion 1) crear texto en archivo\nOpcion 2) Leer archivo\n");
   scanf("%i", &opcion);
   switch(opcion){
      case 1:
         textocrea();
         break;
      case 2://funciona!!!
           textolee();
           break;
      default:
          printf("Selecciono una opcion no existente\n");   
         break;   
   }
      
   return 0;
}
  textocrea()
{
    FILE *vfile;
    char caracter[1000];
    vfile = fopen("d:/texto.txt", "w");
    if(vfile==NULL){
        printf("Error al crear archivo\n");
     }
   
    printf("Ingrese el texto\n");
    scanf( " %[^\n]",&caracter );
   fputs(caracter, vfile);           
    fclose(vfile);   
    return 0;   
  }
textolee()
{
   FILE *vfile;
   char caracter [1000];
   vfile = fopen("d:/texto.txt", "r");
   if(vfile==NULL){
        printf("Error al crear archivo\n");
     }
     while(!feof(vfile)){
        
        fread(&caracter, sizeof(caracter), 1, vfile);
        
        printf("%s", caracter);
          }
   
   fclose(vfile);
   
   return 0;
   
   
    }


Sin embargo me dice mi profe que por qué no definí las funciones como void. Probé y no funcionan con void. Tampoco funciona el gets en vez del scanf. Alguien sabe por qué pasa esto? Cómo es lo de las funciones void?


Desde ya gracias Chicos!!!