Problema al leer desde la bibliteca standar

Iniciado por Curioso0078, 15 Marzo 2017, 19:06 PM

0 Miembros y 1 Visitante están viendo este tema.

Curioso0078

Tengo que crear una funcion que devuelva un texto (Una palabra) leido desde la entrada estandar. Como es una palabra, la funcion lee hasta encontrar un espacio en blanco. Ademas esta la condicion de que la palabra no puede ser mayor a 20.
Tengo que hacerlo mediante punteros y estructuras por eso, lo que hice fue lo siguiente:


struct textoenstruct;

typedef textoenstruct *puntero_a_struct;

struct textoenstruct {
  char caracteres[21];
  nat longitud;
};

puntero_a_struct palabra() {
puntero_a_struct final = new textoenstruct[21];
scanf("%c",final>caracteres);
int i = 0;
while (i != strlen(final->caracteres))
{
if (final->caracteres[i] == "\0")
{
int h = i;
while (h < i)
{
final->caracteres[h] = "\0";
h++;
}
i++;
}
}
return final;
}


El problema es que no esta funcionando, y no se estoy haciendo mal, para mi tiene logica, pues, crea "textoenstruct", y al colocar "final->caracteres" en scanf, se coloca ahi la palabra, si se coloca "hola como estas" con el convierte desde la "c" hasta el final de la segunda palabra en "\0", ya que no se pueden achicar vectores la pense asi. Pero sigue sin funcionar

ivancea96

scanf recibe como primer parámetro una cadena dependiendo de lo que quieras leer. %c es apra caracter. 1 caracter. %s es para una cadena. Prueba con %s.