Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: flacc en 4 Julio 2012, 03:58 am



Título: formato %[abc]... [c]
Publicado por: flacc en 4 Julio 2012, 03:58 am
Hola, pues verán, en el libro Introducción a la programación en C, pag 69 del pdf, aparece lo de los formatos %^[abc] y %[abc] que permiten leer una cadena de caracteres hasta encontrar los que están dentro de los corchetes...

el problema es que busco por formato en google y otras cosas y no logro encontrar información acerca de eso, como el pdf no lo explica mucho no acabo de entender como se utiliza ni como funciona y solo me queda una baga idea de lo que hacen... si alguien fuera tan amable de explicarme con un ejemplo o decirme con que nombre buscar en google para poder aprender a usarlos se los agradecería mucho...saludos


Título: Re: formato %[abc]... [c]
Publicado por: do-while en 4 Julio 2012, 08:55 am
¡Buenas!

Si mal no recuerdo %[^secuencia] rastrea caracteres desde la entrada hacia una una cadena (con scanf) hasta que encuentra uno que pertenece a la lista (es decir, devuelve desde la entrada, el segmento inicial hacia la cadena que se pasa como argumento a scanf que no esta compuesto por caracteres de la secuencia). %[secuencia] seria lo contrario, devolveria el segmento inicial de la carena indicada que este formado solo por caracteres de la secuendia indicada.

ejemplo:
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *agrv[])
  4. {
  5.    char s1[10] = "", s2[10] = "";
  6.  
  7.    scanf("%[abc]",s1); //leemos de la entrada la secuencia inicial formada por caracteres a,b o c.
  8.  
  9.    while(getchar() != '\n'); //descartamos los caracteres que queden.
  10.  
  11.    scanf("%[^abc]",s2); //leemos de la entrada la secuencia inicial no formada por caracteres a,b o c.
  12.  
  13.    while(getchar() != '\n'); //descartamos los caracteres que queden.
  14.  
  15.    printf("%s\n,%s\n",s1,s2);
  16.  
  17.    printf("Pulsar intro...");
  18.    while(getchar() != '\n');
  19.  
  20.    return 0;
  21. }
  22.  
  23.  

¡Saludos!