elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dudas sobre las funciones void en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Dudas sobre las funciones void en C  (Leído 5,103 veces)
niñoAtómico

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Dudas sobre las funciones void en C
« en: 11 Octubre 2013, 01:11 am »

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!!!


En línea

"Los genios son idiotas insistentes..."
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas sobre las funciones void en C
« Respuesta #1 en: 11 Octubre 2013, 01:27 am »

http://en.wikipedia.org/wiki/Void_type


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
niñoAtómico

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Dudas sobre las funciones void en C
« Respuesta #2 en: 11 Octubre 2013, 01:42 am »

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!!!
En línea

"Los genios son idiotas insistentes..."
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas sobre las funciones void en C
« Respuesta #3 en: 11 Octubre 2013, 01:45 am »

Código
  1. void f1();
  2.  
  3. void f1()
  4. {
  5. //codigo aca
  6. //no usar return
  7. }

gets es una funcion insegura que no permite especificar el tamaño del buffer, es mejor no usarla jamas.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
niñoAtómico

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Dudas sobre las funciones void en C
« Respuesta #4 en: 11 Octubre 2013, 02:14 am »

Muchísimas gracias, era algo simple que nadie me sabía decir.

Buena onda!!!  ;-)

En línea

"Los genios son idiotas insistentes..."
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas sobre las funciones void en C
« Respuesta #5 en: 11 Octubre 2013, 10:06 am »

De nada  ::) Igual te recomiendo conseguir algun libro, asi vas a tener una buena base y poder resolver casi todos tus dudas.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Dudas sobre las funciones void en C
« Respuesta #6 en: 11 Octubre 2013, 10:25 am »

Código
  1.  
  2. #include <iostream>
  3. #include <windows.h>
  4. using namespace std;
  5.  
  6. main ( )
  7. {
  8.    cout << "Hola" << endl;
  9.    system ("pause>nul");
  10. }
  11.  
  12.  

A mi este mini código me ha funcionado :D

El return/int en main es por potabilidad y para obtener códigos de errores?
Creo que para obtener parámetros externos de otras aplicaciones no es eso??
Soy muy nobs y me gusta aprender también XD
tks Idol ;-)
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas sobre las funciones void en C
« Respuesta #7 en: 11 Octubre 2013, 10:34 am »

Es para que el que llama a tu programa pueda obtener un resultado del mismo de manera sencilla. Notese que yo no use void para main.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
niñoAtómico

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Re: Dudas sobre las funciones void en C
« Respuesta #8 en: 11 Octubre 2013, 12:03 pm »

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...
En línea

"Los genios son idiotas insistentes..."
vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Dudas sobre las funciones void en C
« Respuesta #9 en: 11 Octubre 2013, 17:59 pm »

Mira no es que los libros sean malos ok eso es lo que pasa por aprender de los libros.
As veces pillas algo y no tienes nadie para poder preguntar.
Como sabes un programa siempre devuelve algo a menos que digamos el contrario con el void.
main es una función igual que todas las demás.
Tiene que ser main por que es la primera función que llama el compilador.
Se supone que una función hace algo no?
Como cuando llamas a una función que suma 2 números esperas algo de ella.
Pos bien...a main le pueden llamar otros programas externos y puede recibir parámetros como todas las demás funciones, (no te olvides main es una función y las funciones reciben y devuelven valores) o así creo que es.
Y ese programa puede estar esperando que main le devuelva algo, cosa que no siempre o casi nunca es cierto, pero puede pasar.
Al igual que main también puede esperar datos entre ().
Se supone que cuando un programa no retorna nada debemos ponerle un void de retorno.
Pero no nos va doler si ponemos como int y al final le ponemos que no retorna nada.
Ademas ni es necesario poner el return aun que si es muy muy recomendable, pero ya ves tu el problema de no ponerlo XD
Se recomienda poner return 0; dicen que es por portabilidad ni idea jaja.
Así que creo que siempre siempre deberías poner como int main por que en realidad da igual hasta el día que te haga falta usar el return de main y sus () para recibir argumentos.
Bueno eh explicado aquí lo poco que se, comparado con algunos aquí soy una pulga pero si me equivoco que alguien me corrija.  :rolleyes:
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
(void *) en funciones
Programación C/C++
Shon 4 5,001 Último mensaje 25 Enero 2011, 16:06 pm
por Littlehorse
Recursividad con funciones void, ayuda
Java
LiLou 1 3,849 Último mensaje 3 Abril 2011, 10:51 am
por LiLou
funciones INT vs VOID « 1 2 »
Programación C/C++
ALONSOQ 14 6,594 Último mensaje 4 Septiembre 2012, 16:49 pm
por ALONSOQ
DuDas sobre funciones Python"
Scripting
Itzhack 6 4,287 Último mensaje 9 Febrero 2015, 14:47 pm
por Itzhack
COMO DIVIDIR MI CODIGO EN FUNCIONES(VOID)
Programación C/C++
silfer_1908 1 1,643 Último mensaje 25 Octubre 2018, 00:28 am
por huchoko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines