[LUG.ro Mix] Duda con C, la ultima, lo juro..

Matias Sanchez lugro-mix@lugro.org.ar
Wed, 5 Jul 2006 16:54:55 -0300


Gracias Nico. La verdad que me habia vuelto loco. Sabia que existia la 
sscanf, que lee datos pero con la diferencia que no de la entrada estandar 
como el scanf... Pero la verdad no tenia idea de la sprintf. 10 puntos.
Muchisimas gracias por ponerte a leer mi thread. Tengo que rendir mañana y 
no soy partidario de sistematisar solamente para rendir bien. Me gusta el C 
y cuando tengo que hacer algo lo veo como un desafio, no algo que me va a 
permitir o no aprobar. Le pregunté a mil compañeros que ya rindieron, y ni 
idea... Por eso recurro a la gente que le gusta encerio y no a los que 
estudian pro obligacion... Jejeje. Gracias nuevamente.

Matias

> Hola.
>
> Te conviene usar sprintf en vez de strcpy y strcat. En caso de que 
> hubieses querido usar strcat en vez de sprintf tendrias que antes 
> convertir en entero cant en un str y luego concatenarlo. Pero bueno,
> para lo que quer'es hacer viene mejor sprintf.
>
> char *devuelve(float disp,int cant,struct datos gas)
> {
>         static char dev[30];
>
>         if(cant > gas.cant){
>                 sprintf(dev,"La cantidad de gaseosa disponible es: 
> %d\n",gas.cant);
>         }
>
>         return dev;
> }
>
>
> el codigo en general se puede corregir bastante m'as, pero me limito nomas 
> a responder la pregunta simplemente por razones de tiempo m'as que nada.
>
> Saludos,
> Nicol'as.
>
>
> Matias Sanchez wrote:
>> Disculpas por el Offtopic en lugro.
>>
>>> Bueno, les pasteo el codigo:
>>>
>>> #include <stdio.h>
>>> #include <string.h>
>>>
>>> struct datos{
>>> char nombre[30];
>>> int cant;
>>> float precio;
>>>   };
>>>
>>> char *devuelve(float, int,struct datos);
>>>
>>> main()
>>>
>>> {
>>> int cant=0,nrogas=0;
>>> float preciodisp;
>>> struct datos gaseosa[5];
>>>
>>> gaseosa[3].cant = 5;
>>> gaseosa[3].precio = 2;
>>> strcpy(gaseosa[3].nombre,"Cocaloca");
>>> printf("Ingrese el nro de la gaseosa\n");
>>> scanf("%d",&nrogas);
>>>
>>> printf("Ingrese cantidad que desea\n");
>>> scanf("%d",&cant);
>>>
>>> printf("Ingrese el dinero del que dispone\n");
>>> scanf("%f",&preciodisp);
>>>
>>> printf("%s\n",devuelve(preciodisp,cant,gaseosa[nrogas]));
>>>
>>> }
>>>
>>> char *devuelve(float disp,int cant,struct datos gas)
>>> {
>>> static char dev[30];
>>>
>>> if(cant > gas.cant){
>>>  strcpy(dev,"La cantidad de gaseosa disponible es:");
>>>  strcat(dev,gas.cant)
>>>                            }
>>>
>>> return dev;
>>> }
>>>
>>> Es en realidad una reconstruccion de algo mucho mas grande, y solamente 
>>> para probar algo.
>>> Ahora va la pregunta. En la funcion devuelve que tengo que devolver un 
>>> puntero a char, necesito que dicho puntero tenga una cadena de 
>>> caracteres y ademas concatenarle, en este caso, el entero cant. 
>>> Obviamente me tira error el strcat, porque la funcion está definida con 
>>> parametros char*, pero no se me ocurre otra manera de hacerlo, siempre 
>>> teniendo que devolver un puntero a char y mostrando unicamente con el 
>>> printf lo que me devuelve la funcion.
>>> Se entiende? Alguien con alguna idea?
>>> Muchas gracias muchachos.
>>
>>
>> _______________________________________________
>> Lugro-mix mailing list
>> Lugro-mix@lugro.org.ar
>> http://www.lugro.org.ar/mailman/listinfo/lugro-mix
>>
>
> _______________________________________________
> Lugro-mix mailing list
> Lugro-mix@lugro.org.ar
> http://www.lugro.org.ar/mailman/listinfo/lugro-mix