Autor
|
Tema: Funcion en C que pide al usuario un numero introducido por pantalla (Leído 8,557 veces)
|
Dumy
Desconectado
Mensajes: 25
|
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
Mensajes: 1.869
🔵🔵🔵🔵🔵🔵🔵
|
|
|
|
En línea
|
|
|
|
EdePC
|
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
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 1.869
🔵🔵🔵🔵🔵🔵🔵
|
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
Mensajes: 25
|
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
|
|
|
|
|
EdePC
|
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: #include <stdio.h> int main() { int a, b, c; int r; printf("Dame tres números: "); r = scanf("%d %d %d", &a , &b , &c ); if (r == 3) { printf("Usted a introducido %d %d %d", a , b , c ); } else { printf("Usted no a introducido 3 números"); } }
|
|
|
En línea
|
|
|
|
Dumy
Desconectado
Mensajes: 25
|
entonces le añado a la funcion una amnera de verificar si guardo el dato?
|
|
|
En línea
|
|
|
|
Danielㅤ
Desconectado
Mensajes: 1.869
🔵🔵🔵🔵🔵🔵🔵
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
separar información que el usuario ha introducido [batch]
Scripting
|
.:UND3R:.
|
5
|
5,235
|
10 Mayo 2011, 04:00 am
por aNT366
|
|
|
C++ Duda: [Cin] No mostrar el valor introducido en pantalla
Programación C/C++
|
Orcbull
|
2
|
2,483
|
2 Diciembre 2012, 13:58 pm
por Orcbull
|
|
|
[HTML] Porcentaje a valor introducido por el usuario
Desarrollo Web
|
Geormarsch
|
0
|
2,161
|
12 Octubre 2016, 17:10 pm
por Geormarsch
|
|
|
Como detecto el tipo de dato introducido en la llamada de una funcion?
Programación C/C++
|
@XSStringManolo
|
5
|
2,777
|
9 Junio 2019, 06:48 am
por @XSStringManolo
|
|
|
Instagram me bloquea y pide número de teléfono
Dudas Generales
|
FJDA
|
2
|
2,967
|
26 Mayo 2022, 21:34 pm
por FJDA
|
|