[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Programacion en c, scanf con espacios en blanco



El scanf se utiliza más en momentos en los que quieres sacar datos de cadenas con un formato que conoces, pero si lo que quieres es simplemente sacar cadenas, es posible que te de problemas (por el tema de los espacios). Sé un poco más específico... qué cadenas procesar con el scanf? Sólo quieres recuperar chars?

Puedes probar con getchar, pero volvemos a lo mismo, necesitarás decirle a tu programa cuando termina la cadena... si es de ancho fijo será por su longitud, si es linea por linea será cuando encuentre el char 10... y así :P

Y qué te ha dicho el señor gcc del gets()!?!? XD

Si, por ejemplo, quisieras procesar un archivo linea por linea... pues:

/* INICIO prueba.c */

#define MAX    1024 /* máximo tamaño para cada línea */

void procesa_linea(char *linea) {
/* esta funcion se llamará 1 vez por linea, el
 * argumento será la línea en sí claro */
printf("NUEVA LINEA: %s\n", linea);
return;
}

int main() {
char c;
char buf[MAX] = {0};
while ((c = getchar()) != -1) {
 if (c == 13) continue; /* por si el archivo viene de un windows */
 if (c == 10) {
  procesa_linea(buf);
  buf[0] = '\0';
  continue;
 }
 sprintf(buf, "%s%c", buf, c);
}
return 0;
}

/* FIN prueba.c */

Ahora compilas -> gcc prueba.c -o prueba
Y luego "cat archivo | ./prueba | less"

Evidentemente esto no está depurado.
Si quieres que en lugar de leer del stdin quieres leer de un archivo, puedes utilizar el fgetc... Espero que te ayude de algo, aunque si especificas algo más... pues más ayuda recibirás :D

Saludos.

---------------------------------------------
Arnau Carrasco - http://www.arnaucarrasco.com
---------------------------------------------

----- Original Message ----- From: "Enrique Jiménez Campos" <ejcampos@gmail.com>
To: <debian-user-spanish@lists.debian.org>
Sent: Friday, March 02, 2007 4:21 PM
Subject: [OT] Programacion en c, scanf con espacios en blanco


Buenas, mi duda es que si hay alguna manera de usar scanf con el parametro %s para guardar cadenas de caracteres con espacios, me gustaria saberlo ya que
al gcc no parece gustarle demasiao gets().
Un saludo


--
To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org






Reply to: