Estoy empezando a programar con C. :ojo: y tengo el siguiente problema. He escrito este código:
#include
void gets2(int, int);
main()
{
int x=4, y=7;
gets(x, y);
}
void gets2(int xx, int yy)
{
printf("El primero es %d, el segundo es %d", xx,yy);
}
Y me da el siguiente error:
C:Javiprueba.cpp(7) : error C2664: 'gets' : cannot convert parameter 1 from 'int' to 'char *'
Por favor me gustaria que me lo solucionaseis lo antes posible gracias. :loco:
[ Este Mensaje fue editado por: Leoheart el 2002-06-21 14:26 ]
Hola.
Prueba a cambiar la llamada que haces a la funcion "gets" por la que si has escrito tu "gets2".
"gets" es una funcion de la libreria de C que tiene un proposito y parametros totalmente diferentes a la que has escrito tu :sonriendo:
Saludos, Astharoth.
Po zi, más bien parece que te has dejado el 2 de tu gets, lo otro ya parece que lo tengas en cuenta :ojo:
gets es una función estandard del C que lee una linea del stdin y la mete en un array de caracteres (que es el parametro que te pide un char*).
Como han dicho antes tu funcion la declaras con el nombre de gets2 y llamas a la funcion gets (que no es la tuya).
En situaciones normales el compilador te responde como que no existe dicha función, pero al ser una función estandard del C el compilador cree que es la función estandard la que intentas usar.
Muchas gracias por ayudarme, ahora luego lo pruebo y os lo comunico. Es que estoy empezando en esto de la programacion y es ke me lio un poco. :ojo:
Ooohh que error mas tonto e tenido estaba llamando a una funcion que existia ahora si que funciona, Thank You :ojo:
sugerencia:
no hace falta que utilices nombres locales como XX cuando en otras funciones usas X ...como si tubieras miedo de que colisionaran. La funcion que tiene XX jamas podra ver la variable X, asi que podias haber reusado el nombre X, ...es mucho mas seguro conocer realmente el ambito de las variables que andar con estos miedos por el mundo.
de echo, el unico ambito que te debe preocupar desde dentro de una funcion es el global, asi si creas una variable global X tener cuidado de que estas leyendo dentro de una funcion que declare char x;
Creo que el compilador resuelve esto tomando la X del ambito mas cercano, el local obviamente, asi que la X global en ese caso no se veria.. bla bla bla :riendo:D
Totalmente de acuerdo con Tei, y además, yo añadiria que utilices nombres en español para tus funciones, así no habrá problema de que utilices el nombre de alguna función propia del lenguaje o librerias, como te ha pasado con "gets"
un saludo