Falta el signo / dirección de (&) en scanf () (C lenguaje de error)

En este artículo, vamos a aprender acerca de un error que se produce en el lenguaje de programación C cuando se pierda la función de uso y comercial / dirección de while operador usando scanf () .

Este es un error muy común cometido por los programadores, while valores de lectura utilizando scanf () , damos el nombre de la variable, pero a veces nos olvidamos de utilizar signo / dirección del operador ( y ) con el scanf () función.

Nota: no es necesario para el uso de signo / dirección de ( y ) operador siempre con el scanf () función. While el uso de punteros y la lectura de los valores de cadena (array de caracteres), que no do utilizamos.

Los argumentos de la función scanf () son los tipos de punteros, debemos proporcionar ya sea una dirección de una variable o un puntero (que contiene la dirección de la variable).

Por lo tanto, if estamos utilizando un puntero en scanf () , no utilizamos la dirección de ( y ) del operador, porque puntero contiene la dirección en sí.

Por lo tanto, la siguiente declaración será un error:

int age; char gender;
scanf("%c%d",gender, age);

Aquí, género y edad son las variables normales que se utilizan para almacenar, recuperar los valores que los medios edad y género funcionará sólo con los valores y scanf () necesita la dirección de las variables. Por lo tanto, la afirmación anterior escrito será incorrecto.

Entonces, lo que la frase correcta ?

Aquí está el declaración correcta de leer ‘género’ y ‘edad’ a través scanf ()

int age; char gender;
scanf("%c%d",&gender, &ge);

También podemos utilizar los punteros, como scanf () acepta direcciones,

por lo tanto, esta declaración también será correcta:

//variable declarations
int age; char gender;
//pointer declarations and assignment
int *ptr_age = &age; char *ptr_gender = &gender;
scanf("%c%d",ptr_gender, ptr_age);

Ejemplo para leer la edad y de género en C:

#include <stdio.h>
int main()
{
//variable declarations
int age; char gender;
//input values
printf("Enter gender, age (separate by space): ");
scanf("%c%d",&gender,&age);
printf("Gender: %c, Age: %dn",gender,age);
return 0;
}

salida

    Enter gender, age (separate by space): M 29
Gender: M, Age: 29


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *