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


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Funcion en C que pide al usuario un numero introducido por pantalla
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Funcion en C que pide al usuario un numero introducido por pantalla  (Leído 8,557 veces)
Dumy

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Funcion en C que pide al usuario un numero introducido por pantalla
« en: 5 Julio 2024, 12:00 pm »

Buenos días estoy intentando hacer una función que pida al usuario ingresar un numero por pantalla, pero Visual estudio me dice que se omite el valor  devuelto scanf,

Esta es la función:

int pedir_numero() {

    int numero;

    printf("dime un numero: ");
    scanf("%d", &numero);

    return numero;

}

y este es el código al completo:


#define _CRT_SECURE_NO_WARNINGS

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

void cotorreo();
int pedir_numero();
void fechayhora();

void cotorreo() {

    printf("En este programa hay 3 opciones diferentes que se detallan a continuación, para acceder a ellas, se te pedira un numero que tiene que estar entre el 1 y el 3, introducelo \n \n");

    printf("Opción 1: Insertar la fecha y la hora en el documento de salida: producto2.txt \n \n");
    printf("Opción 2: Comprobar e informar por pantalla sobre cuáles de una lista de máquinas referenciadas por su IP escrita en un archivo de texto, contestan positivamente a un ping lanzado por la aplicación que estás programando. Se recomienda generar un submenú donde se solicite el nombre y ubicación de dicho archivo. \n \n");
    printf("Opción 3: Mostrar y guardar en un fichero llamado adaptador.txt, la configuración de red de la máquina local para un adaptador que previamente se preguntará al usuario \n \n");

}

int pedir_numero() {

    int numero;

    printf("dime un numero: ");
    scanf("%d", &numero);

    return numero;

}

void fechayhora() {

    time_t t = time(NULL);
    struct tm tm = *localtime(&t);

}



int main(void) {


    cotorreo();
    int num = pedir_numero();
    fechayhora();

    return 0;

}


Sospecho que la razón es un error lógico, probablemente que le falte algo a al función, pero e probado diferentes soluciones como añadir punteros, iniciar el valor etc. y me sigue apareciendo, ¿Alguien puede decirme el error?




En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.869


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #1 en: 5 Julio 2024, 16:47 pm »

Hola, prueba a cambiar esta línea:

Código
  1. scanf("%d", &numero);

Por ésta:

Código
  1. scanf("%d", numero);

Aquí te dejo más información:

https://www.it.uc3m.es/pbasanta/asng/course_notes/input_output_function_scanf_es.html

https://www.ibm.com/docs/es/i/7.5?topic=functions-scanf-read-data


Saludos


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.227



Ver Perfil
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #2 en: 5 Julio 2024, 17:21 pm »

Muestra un error o advertencia? sería bueno que pongas el error tal cual o una captura de pantalla, yo creo que es una advertencia como los que aparecen cuando declaras una variable y nunca la usas, quizá diga que: "estás pidiendo un número pero no haces nada con él"

CLion si me da ese tipo de advertencias pero compila y ejecuta sin errores, DevCpp de Embarcadero tampoco se hace problemas salvo que lo configures para que te muestren las advertencias que por defecto están desactivadas. Si usas VSCode dependerá de los plugins que uses porque a veces es un lío configurarlos
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


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


Ver Perfil WWW
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #3 en: 5 Julio 2024, 17:55 pm »

Hola, prueba a cambiar esta línea:

Código
  1. scanf("%d", &numero);

Por ésta:

Código
  1. scanf("%d", numero);

Aquí te dejo más información:

https://www.it.uc3m.es/pbasanta/asng/course_notes/input_output_function_scanf_es.html

https://www.ibm.com/docs/es/i/7.5?topic=functions-scanf-read-data


Saludos

Dumy: no pruebes eso, scanf tiene que cambiar el valor de la variable numero y necesita que la pases por referencia como hiciste y no por valor. En el primer enlace lo dice claramente, se ve que Daniel no lo leyo o no lo entiende.

Y como dice EdePC pega el mensaje exacto ... con el nivel 4 de advertencias sale C4189 (variable local inicializada pero no referenciada, simplemente que no usas num posteriormente a asignarle el resultado de pedir_numero).
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
Danielㅤ


Desconectado Desconectado

Mensajes: 1.869


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #4 en: 6 Julio 2024, 00:50 am »

Dumy: no pruebes eso, scanf tiene que cambiar el valor de la variable numero y necesita que la pases por referencia como hiciste y no por valor. En el primer enlace lo dice claramente, se ve que Daniel no lo leyo o no lo entiende.

No tengo conocimientos en el lenguaje C, aunque algo si he leído y he tomado de ejemplo éste código:



de ésta página:

https://parzibyte.me/blog/2020/12/30/c-leer-cadena-espacios/

aunque ese valor es un string y no un int.

Igualmente tenés razón la variable numero la tiene que pasar como referencia.
« Última modificación: 6 Julio 2024, 00:54 am por Danielㅤ » En línea

Dumy

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #5 en: 7 Julio 2024, 18:17 pm »

Dumy: no pruebes eso, scanf tiene que cambiar el valor de la variable numero y necesita que la pases por referencia como hiciste y no por valor. En el primer enlace lo dice claramente, se ve que Daniel no lo leyo o no lo entiende.

Y como dice EdePC pega el mensaje exacto ... con el nivel 4 de advertencias sale C4189 (variable local inicializada pero no referenciada, simplemente que no usas num posteriormente a asignarle el resultado de pedir_numero).


Me sale una advertencia

Este  es el mensaje que em da el visual estudio, el código es C6031:
Advertencia   C6031   Se omitió el valor devuelto: 'scanf'.   verano7   C:\Users\Siseo\source\repos\verano7\pruebacodigodesarrolladoenotraaplicaiconc.cpp   33      
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.969


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


Ver Perfil WWW
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #6 en: 7 Julio 2024, 22:31 pm »

scanf devuelve un int como valor de retorno, no lo estas comprobando para saber si funciono, eso dice la advertencia.

https://learn.microsoft.com/es-es/cpp/c-runtime-library/reference/scanf-scanf-l-wscanf-wscanf-l?view=msvc-170
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
EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.227



Ver Perfil
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #7 en: 7 Julio 2024, 23:34 pm »

Me sale una advertencia

Este  es el mensaje que em da el visual estudio, el código es C6031:
Advertencia   C6031   Se omitió el valor devuelto: 'scanf'.   verano7   C:\Users\Siseo\source\repos\verano7\pruebacodigodesarrolladoenotraaplicaiconc.cpp   33      

Has de estar usando el IDE Visual Studio, yo no lo tengo para probarlo pero te está diciendo que scanf devuelve un valor y lo estás omitiendo, en sí es bastante común que omitan el valor devuelto por scanf pero quizá te interese guardar y/o verificar el valor que devuelve scanf para hacer una validación de datos.

scanf devuelve la cantidad de datos que ha sido capaz de leer bajo el formato dado, en lugar de ir a revisar las variables puedes revisar la cantidad de datos leídos válidos:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  int a, b, c;
  5.  int r;
  6.  
  7.  printf("Dame tres números: ");
  8.  r = scanf("%d %d %d", &a, &b, &c);
  9.  if (r == 3) {
  10.    printf("Usted a introducido %d %d %d", a, b, c);
  11.  } else {
  12.    printf("Usted no a introducido 3 números");
  13.  }
  14. }
En línea

Dumy

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #8 en: 9 Julio 2024, 13:20 pm »

entonces le añado a la funcion una amnera de verificar si guardo el dato?
En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.869


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Funcion en C que pide al usuario un numero introducido por pantalla
« Respuesta #9 en: 9 Julio 2024, 16:06 pm »

entonces le añado a la funcion una amnera de verificar si guardo el dato?

No, lo que tenés que hacer es guardar en una variable el valor devuelto por la función scanf en el momento en el que se le pide al usuario que escriba un número ya que el error indica que no se está comprobando o guardando el valor recibido.

Por cierto tendrías que también verificar con un condicional If o con otra función, si el valor que ingrese/escriba el usuario es realmente un número (int), porque que pasaría si se escribe otro caracter como letras o números con letras?, el programa puede dar error, no creo que sea porque la función scanf reciba cualquier valor, sino por la función prinf que estará intentando imprimir un valor numérico cuando es por ejemplo una letra, en el caso que eso pase, es decir en la verificación del valor ingresado se tiene que pedir nuevamente al usuario que ingrese un valor y que tiene que ser numérico, y para que eso funcione así tenés que modificar el código.
« Última modificación: 9 Julio 2024, 16:12 pm por Danielㅤ » En línea

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

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines