SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Funciones de
            librerías C
             GNU/Linux
Copyright (c) 2006, Jose Daniel Gutiérrez Porset
josedaniel.gutierrez@ehu.es
Licencia de Uso


 Acerca de este documento

 Copyright (c) 2006, Jose Daniel Gutiérrez Porset
 josedaniel.gutierrez@ehu.es

 Se otorga permiso para copiar, distribuir y/o modificar este documento
 bajo los términos de la Licencia de Documentación Libre de GNU en su
 versión 1.2 o cualquier otra versión posterior publicada por la Free Software
 Foundation, siendo todo él invariante. Una copia de la licencia está disponible
 en la web de la Free Software Foundation, dentro de la sección titulada
 GNU Free Documentation License.

 Este documento ha sido realizado íntegramente con software libre.




                                                                                   2
Índice

    Licencia de uso de este documento
●


    Ayuda de funciones
●


    Cuadros sinópticos
●


    Funciones
●




                                        3
Ayuda de funciones

    Paquete debian/ubuntu/...: manpages-dev
●




    Comandos desde la shell:
●


         apropos <todo_o_parte_de_nombre_funcion>
     –

         man nombre_funcion
     –

         man 2 nombre_funcion
     –

         man 3 nombre_funcion
     –




                                                    4
Cuadros sinópticos
Funciones de E/S mediante streams

      Tabla de funciones de gestión de streams en stdio.h
●

      Función   E/S   stream   Contenido         Destino            Origen             Comentarios
    printf       S    stdout   texto                          Argumentos
                                                              según formato
    putchar      S    stdout   texto                          Carácter
    puts         S    stdout   texto                          Cadena            Añade salto de línea
    scanf        E    stdin    texto       Argumentos según
                                           formato
    getchar      E    stdin    texto       Carácter
    gets         E    stdin    texto       Cadena                               A diferencia de fgets no
                                                                                establece tamaño máx.
    fprintf      S    FILE *   texto                          Argumentos
                                                              según formato
    fputc        S    FILE *   texto                          Carácter          Hay una macro estándar
                                                                                equivalente: putc
    fputs        S    FILE *   texto                          Cadena            No añade salto de línea
    fscanf       E    FILE *   texto       Argumentos según
                                           formato
    fgetc        E    FILE *   texto       Carácter                             Hay una macro estándar
                                                                                equivalente: getc
    fgets        E    FILE *   texto       Cadena
    fwrite       S    FILE *   binario                        Zona de memoria
    fread        E    FILE *   binario     Zona de memoria
                                                                                                           5
Cuadros sinópticos
Funciones de streams

    Características comúnes a las funciones indicadas:
●


         Funcionan con buffers de entrada y salida, y no los limpian previamente. Tiene que ver con 
     –
         la espera a que esté el buffer lleno (en salida se mejora el rendimiento; en el caso de un 
         buffer de entrada, se puede editar). Los buffers pueden ser de tres tipos: completo, de línea 
         (ej. las de stdin) o nulo.
         En el caso de las funciones que leen de la entrada estándar, se hace eco a la pantalla si no 
     –
         hay redirección a fichero.
         Todas las indicadas son estándar, y existen tanto en GNU/Linux como en Ms DOS/Windows.
     –

         Hay otras funciones no estándares, dependientes de S.O. y que operan sobre la terminal (no 
     –
         sobre streams de E/S). Ej. en el caso de Ms, se definen en conio.h las siguientes: getche, 
         getch, putch. Su comportamiento difiere según hagan o no eco, etc.
    Regla nemotécnica para ubicación de parámetro FILE * en las declaraciones: siempre es el último 
●


    parámetro excepto en fprintf y fscanf donde es el primero




                                                                                                         6
Funciones


    void *calloc (size_t num_elem, size_t tam_bytes);
●



        malloc.h, stdlib.h
    –

        Reserva dinámica de memoria de num_elem x tam_bytes
    –

        Valor devuelto: puntero a la memoria asignada, o NULL si la 
    –
        petición falla
    void clearerr( FILE *stream);
●



        stdio.h
    –

        Limpia los indicadores de fin de fichero y error para un stream 
    –
        concreto




                                                                           7
Funciones


    int fclose (FILE *stream);
●



        stdio.h
    –

        Cerrar stream
    –

        Valor de retorno: en caso de éxito 0, y si error ­1
    –

    int feof (FILE *stream);
●



        stdio.h
    –

        Indicador de fin de fichero
    –

        Valor de retorno: en caso de no haberse intentado leer o escribir al 
    –
        final del fichero devuelve 0




                                                                            8
Funciones


    int ferror (FILE *stream);
●



        stdio.h
    –

        Indicador de error
    –

        Valor de retorno: devuelve el último código de error 
    –
        correspondiente a una operación de streams sobre un stream 
        concreto, o 0 si no lo ha habido.
    int fflush (FILE *stream);
●



        stdio.h
    –

        Volcado de buffers de salida
    –




                                                                      9
Funciones


    int fgetc(FILE *stream);
●



        stdio.h
    –

        Idem que getchar sobre un stream
    –

    char *fgets(char *destino, int n, FILE *stream);
●



        stdio.h
    –

        Lee desde un stream como mucho n­1 caracteres, o hasta encontrar 
    –
        un salto de línea (que lo mantiene) o fin de fichero
        Añade un '0' al final
    –

        Valor de retorno: s en caso de éxito, y NULL en caso de error o si 
    –
        se llega al final del stream


                                                                              10
Funciones


    FILE *fopen (char *nomfich, char *modo);
●



        stdio.h
    –

        Abrir stream. Parámetro modo:
    –
           Modo     ¿Puede      ¿Puede       Posición        Si existe      Si no existe el
                     leer?     escribir?    en fichero       el fichero         fichero
          “r”           Sí         No         Principio      No lo borra       Da error
          “r+”          Sí         Sí         Principio      No lo borra       Da error
          “w”          No          Sí         Principio       Lo borra          Lo crea
          “w+”          Sí         Sí         Principio       Lo borra          Lo crea
          “a”          No          Sí           Final        No lo borra        Lo crea
          “a+”          Sí         Sí           Final        No lo borra        Lo crea

    ­    modo puede incluir la letra 'b' como carácter final o entre dos cualesquiera por  
         compatibilidad con ANSI C, pero en los sistemas POSIX (GNU/Linux,...) no tiene efecto
    ­    Si se abre con +, hay que sincronizar buffers entre operaciones: para leer después de 
         escribir, llamar antes a fflush o a una función de posicionamiento (fseek,fsetpos,rewind). 
         Para escribir tras leer, hacer un reposicionamiento, a no ser que sea al final del fichero

        Valor de retorno: en caso de error, devuelve NULL
    –                                                                                                  11
Funciones


    int fprintf(FILE *stream, const char
●

    *formato, ...);
        stdio.h
    –

        Idem que printf sobre un stream
    –

    void    __fpurge(FILE *stream);
●



        stdio_ext.h
    –

        Volcado de buffers de entrada
    –

        No es estándar: Sólo en GNU/Linux
    –




                                            12
Funciones


    int fputc(int caracter, FILE *stream);
●



        stdio.h
    –

        Idem que putchar sobre un stream
    –

    int fputs(const char *origen, FILE *stream);
●



        stdio.h
    –

        Idem que puts sobre un stream
    –

        No añade 'n'
    –




                                                   13
Funciones


    size_t fread( void *ptr, size_t tam_bytes, size_t
●

    num_elem, FILE *stream);
        stdio.h
    –

        Lectura de elementos de memoria
    –

        Valor de retorno: nº de elementos (no de caracteres) leídos 
    –
        correctamente. Si ocurre un error o se llega al fin­de­fichero, el 
        valor devuelto es un nº menor del esperado (o cero).
        fread no distingue entre fin­de­fichero y error, así que quien llame 
        a esta función debe emplear feof y ferror para determinar qué ha 
        ocurrido.
    void free (void * ptr);
●



        malloc.h, stdlib.h
    –

        Liberación de memoria reservada dinámicamente
    –
                                                                            14
Funciones


    FILE *freopen(char *nomfich, char *modo,
●

                  FILE *stream);
        stdio.h
    –

        Redireccionar un stream: se abre el fichero nomfich y le asocia el  
    –
        stream __stream. Éste se cierra si existe.
        El argumento modo se emplea igual que en la función fopen.
    –

        Un uso típico es cambiar el fichero asociado con un stream 
    –
        estándar (stderr, stdin, o stdout).
        Valor de retorno: en caso de error, devuelve NULL
    –




                                                                           15
Funciones


    int fscanf(FILE *stream, const char *formato, ...);
●



        stdio.h
    –

        Idem que scanf aplicado sobre un stream
    –

    int fseek (FILE *stream, long int offset, int
●

    origen);
        stdio.h
    –

        Desplazar indicador de posición un offset según origen:
    –

             SEEK_SET: relativo al comienzo del fichero (offset>0)
         ●



             SEEK_CUR: relativo a la posición actual (offset positivo o negativo)
         ●



             SEEK_END: relativo al final del fichero (offset<0)
         ●



        Valor de retorno: en caso de éxito 0, y si error ­1
    –


                                                                                    16
Funciones


    long int ftell (FILE *stream);
●



        stdio.h
    –

        Obtener el valor actual del indicador de posición de un stream
    –

        Valor de retorno: en caso de error ­1
    –




                                                                         17
Funciones


    size_t fwrite (const void *ptr, size_t tam_bytes,
●

    size_t num_elem, FILE *stream);
        stdio.h
    –

        Escritura de elementos de memoria
    –

        Valor de retorno: nº de elementos (no de caracteres) escritos 
    –
        correctamente. Si ocurre un error o se llega al fin­de­fichero, el 
        valor devuelto es un nº menor del esperado (o cero).




                                                                              18
Funciones


    int getchar(void);
●



        stdio.h
    –

        Lee de stdin un carácter
    –

        Valor de retorno: carácter leído como un unsigned char modelado 
    –
        a un int o EOF al llegar al final de la entrada o en caso de error.
    char *gets (char *destino);
●



        stdio.h
    –

        Lee de stdin hasta encontrar un salto de línea (que sustituye por 
    –
        '0') o EOF
        No controla desbordamiento de buffer
    –

        Valor de retorno: s en caso de éxito, y NULL en caso de error o si 
    –
        se llega al final del stream
                                                                              19
Funciones


    void *malloc (size_t tam_bytes);
●



        malloc.h, stdlib.h
    –

        Reserva dinámica de memoria de tam_bytes
    –

        Valor de retorno: puntero a la memoria asignada, o NULL si la 
    –
        petición falla




                                                                         20
Funciones


    int printf (const char *formato, ...);
●



        stdio.h
    –

        Saca por stdout los argumentos formateándolos según una cadena 
    –
        de control (ver cuadro)
        Muy importante: ha de haber correspondencia entre:
    –

             El nº de parámetros y el nº de %
         ●



             Los tipos de los argumentos y los tipos  indicados con %
         ●



        Valor de retorno: nº de caracteres impresos. Si se encuentra un 
    –
        error de salida, se devuelve un valor negativo.




                                                                           21
Funciones


      Cadena de control: “%­+ 0w.pmc” (obligatorio: c)
  –

             -         justif. izda.
             +         sacar signo
             espacio   espacio si no hay signo
             0         rellenar con ceros (si no está justif. a izda.)
             w         mínima anchura de campo
             p         precisión
             m         carácter de conversión:
                           ● h: short int
                           ● l: long int
                           ● L: long double

             c         carácter de conversión:
                           ● d,i: int
                           ● o: octal
                           ● u: unsigned
                           ● x,X: hexadecimal
                           ● f: float y double
                           ● e,E: exponencial
                           ● g,G: idem que f, e, E según el exponente
                           ● c: char
                           ● s: cadena
                           ● p: puntero                                  22
Funciones


    int putchar(int caracter);
●



        stdio.h
    –

        Saca por stdout un carácter
    –

        Valor de retorno: el carácter escrito como un unsigned char 
    –
        modelado a un int o EOF en caso de error
    int puts (char *cadena);
●



        stdio.h
    –

        Saca por stdout una cadena
    –

        Añade 'n'
    –

        Valor de retorno: número no negativo si acaban bien, o EOF en 
    –
        caso de error

                                                                         23
Funciones


    void *realloc (void *ptr, size_t tam_bytes);
●



        malloc.h, stdlib.h
    –

        Reserva dinámica de memoria de tam_bytes a partir de una zona 
    –
        ya reservada
        Valor de retorno: puntero a la memoria asignada, o NULL si la 
    –
        petición falla




                                                                         24
Funciones


    int remove(const char *pathname);
●



        stdio.h
    –

        Borrado de fichero
    –

        Valor de retorno: en caso de éxito 0, y si error ­1
    –

    int rename(const char *oldpath, const char
●

    *newpath);
        stdio.h
    –

        Renombrar fichero
    –

        Valor de retorno: en caso de éxito 0, y si error ­1
    –




                                                              25
Funciones


    void rewind (FILE *stream);
●



        stdio.h
    –

        Desplazar el cursor del fichero al inicio.
    –

        Es equivalente a fseek(stream, 0L, SEEK_SET).
    –




                                                        26
Funciones


    int scanf (const char *formato, ...);
●



        stdio.h
    –

        Lee de stdin e intenta convertir a tipos según según el formato indicado 
    –
        por una cadena de control. El  análisis acaba cuando  un  carácter de  la 
        entrada no concuerda con un carácter del formato, o bien cuando una 
        conversión no puede realizarse. En este caso el resto de caracteres queda 
        en el buffer de entrada.
        Separador de argumentos en la cadena de control:
    –

              En la cadena de control se interpretan igual el espacio en blanco, el 
          ●


              tabulador y el salto de línea.  Uno de éstos concuerda con cualquier 
              cantidad de espacio en blanco, incluyendo ninguna, en la entrada.
              Se puede emplear otro carácter.
          ●



        No coge el carácter de fin de línea sino que éste se elimina
    –

        No controla desbordamiento de buffer para el caso de %s
    –
                                                                                       27
Funciones


      Cadena de control: “wmc” (obligatorio: c)
  –

                   w   mínima anchura de campo
                   m   carácter de conversión opcional:
                          ● h: shortint
                          ● l: long int o long double
                          ● L: long double

                   c   carácter de conversión:
                          ● d,i: int
                          ● o: octal
                          ● u: unsigned
                          ● x,X: hexadecimal
                          ● f,e,g,E: float
                          ● lf: double
                          ● e, E: exponencial
                          ● c: char
                          ● s: cadena
                          ● p: puntero




      En el caso de introducir números seguidos, puede inducir a confusión. 
  –
      Ej.”%d%f” si se mete 234.567 hay varias posibilidades
      Valor de retorno: nº de conversiones exitosas o el valor EOF si ha habido 
  –
                                                                               28
      un fallo de entrada antes de ninguna conversión
Funciones


    int sprintf (char *destino, const char
●

    *formato, ...);
        stdio.h
    –

        Idem que printf sobre una cadena
    –

        Añade '0' al final
    –

    int sscanf (char *destino, const char
●

    *formato, ...);
        stdio.h
    –

        Idem que scanf sobre una cadena
    –




                                             29
Funciones


    char *strcat (char *destino, char *cadena);
●



        string.h
    –

        Concatenación de una cadena detrás de otra
    –

        No controla desbordamiento de buffer
    –

        Valor de retorno: puntero a la cadena destino
    –

    char *strchr (char *cadena, int caracter);
●



        string.h
    –

        Búsqueda de un carácter en una cadena, de izda. a dcha.
    –

        Valor de retorno: puntero al elemento de la cadena con el carácter 
    –
        coincidente, o NULL si el carácter no se ha encontrado


                                                                         30
Funciones


    int strcmp (char *cadena1, char *cadena2);
●



        string.h
    –

        Comparación de dos cadenas
    –

        Valor de retorno: entero menor que, igual a, o mayor que cero si s1 
    –
        se encuentra que es, respectivamente, menor que, igual a, o mayor 
        que s2
    char *strcpy (char *destino, char *origen);
●



        string.h
    –

        Copia de una cadena a otra
    –

        No controla desbordamiento de buffer
    –

        Valor de retorno: puntero a la cadena destino
    –


                                                                          31
Funciones


    size_t strlen (char *cadena);
●



        string.h
    –

        Longitud de una cadena (nº de caracteres)
    –

        Valor de retorno: nº caracteres
    –

    char *strrchr (char *cadena, int caracter);
●



        string.h
    –

        Búsqueda de un carácter en una cadena, de dcha. a izda. 
    –

    char *strstr (char *cadena1, char *cadena2);
●



        string.h
    –

        Búsqueda de cadena cadena2 en cadena1, de izda a dcha
    –

        Valor de retorno: puntero a la aparición, o NULL si no se encuentra
    –
                                                                         32

Más contenido relacionado

La actualidad más candente (19)

Punteros y funciones
Punteros y funciones Punteros y funciones
Punteros y funciones
 
C++
C++C++
C++
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Curso de C++ (2014)
Curso de C++ (2014)Curso de C++ (2014)
Curso de C++ (2014)
 
Lenguaje C para Administradores de Red - Script I
Lenguaje C para Administradores de Red - Script ILenguaje C para Administradores de Red - Script I
Lenguaje C para Administradores de Red - Script I
 
Lenguaje de-programación-c
Lenguaje de-programación-cLenguaje de-programación-c
Lenguaje de-programación-c
 
Material iii parcial
Material iii parcialMaterial iii parcial
Material iii parcial
 
Republica bolivariana de venezuela
Republica bolivariana de venezuelaRepublica bolivariana de venezuela
Republica bolivariana de venezuela
 
Ikgi
IkgiIkgi
Ikgi
 
Programación en c
Programación en cProgramación en c
Programación en c
 
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOSPRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
 
Sintaxis de lenguaje de programacion
Sintaxis de lenguaje de programacionSintaxis de lenguaje de programacion
Sintaxis de lenguaje de programacion
 
Introduccion Lenguaje C Blanca
Introduccion Lenguaje  C BlancaIntroduccion Lenguaje  C Blanca
Introduccion Lenguaje C Blanca
 
Dev c 1 2011
Dev c  1 2011Dev c  1 2011
Dev c 1 2011
 
Lenguaje c 2
Lenguaje c 2Lenguaje c 2
Lenguaje c 2
 
Webcd
WebcdWebcd
Webcd
 
Introduccion al lenguaje de programacion c
Introduccion al lenguaje de programacion cIntroduccion al lenguaje de programacion c
Introduccion al lenguaje de programacion c
 
C lpii
C lpiiC lpii
C lpii
 

Destacado (11)

openldap
openldapopenldap
openldap
 
openssh
opensshopenssh
openssh
 
Servicios de comunicaciones (i)
Servicios de comunicaciones (i)Servicios de comunicaciones (i)
Servicios de comunicaciones (i)
 
Openssl
OpensslOpenssl
Openssl
 
Proxys
ProxysProxys
Proxys
 
Servidor web apache
Servidor web apacheServidor web apache
Servidor web apache
 
Protocolos SSL/TLS
Protocolos SSL/TLSProtocolos SSL/TLS
Protocolos SSL/TLS
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Protocolo http
Protocolo httpProtocolo http
Protocolo http
 
Canaima GNU/Linux
Canaima GNU/LinuxCanaima GNU/Linux
Canaima GNU/Linux
 
Principales características de windows
Principales características de windowsPrincipales características de windows
Principales características de windows
 

Similar a Funciones C (gnu/linux) (20)

Tarea pagweb
Tarea pagwebTarea pagweb
Tarea pagweb
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
 
Gestion de archivos
Gestion de archivosGestion de archivos
Gestion de archivos
 
Archivos de datos en C
Archivos de datos en CArchivos de datos en C
Archivos de datos en C
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo C
 
Tema 10 www.fresymetal.com
Tema 10 www.fresymetal.comTema 10 www.fresymetal.com
Tema 10 www.fresymetal.com
 
Manejo dearchivosc
Manejo dearchivoscManejo dearchivosc
Manejo dearchivosc
 
Archivos c
Archivos cArchivos c
Archivos c
 
Archivos c
Archivos cArchivos c
Archivos c
 
Dev c++
Dev c++Dev c++
Dev c++
 
Manejo de archivos en c++
Manejo de archivos en c++Manejo de archivos en c++
Manejo de archivos en c++
 
Perl4 io
Perl4 ioPerl4 io
Perl4 io
 
Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3Programacion ii modulo2-leccion3
Programacion ii modulo2-leccion3
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Curso C Ii
Curso C IiCurso C Ii
Curso C Ii
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
ArchivosBinariosPosicionActualPunteroftell.docx
ArchivosBinariosPosicionActualPunteroftell.docxArchivosBinariosPosicionActualPunteroftell.docx
ArchivosBinariosPosicionActualPunteroftell.docx
 
Ficheros C++
Ficheros C++Ficheros C++
Ficheros C++
 

Más de Dani Gutiérrez Porset

Librecon 2016 - Emprendizaje digital y Software libre
Librecon 2016 - Emprendizaje digital y Software libreLibrecon 2016 - Emprendizaje digital y Software libre
Librecon 2016 - Emprendizaje digital y Software libreDani Gutiérrez Porset
 
Evolución de las Herramientas de aprendizaje online con licencia libre
Evolución de las Herramientas de aprendizaje online con licencia libreEvolución de las Herramientas de aprendizaje online con licencia libre
Evolución de las Herramientas de aprendizaje online con licencia libreDani Gutiérrez Porset
 
Introducción al diseño grafico con software libre
Introducción al diseño grafico con software libreIntroducción al diseño grafico con software libre
Introducción al diseño grafico con software libreDani Gutiérrez Porset
 
Intro a los sistemas operativos móviles
Intro a los sistemas operativos móvilesIntro a los sistemas operativos móviles
Intro a los sistemas operativos móvilesDani Gutiérrez Porset
 

Más de Dani Gutiérrez Porset (20)

Librecon 2016 - Emprendizaje digital y Software libre
Librecon 2016 - Emprendizaje digital y Software libreLibrecon 2016 - Emprendizaje digital y Software libre
Librecon 2016 - Emprendizaje digital y Software libre
 
FFMPEG and LibAV
FFMPEG and LibAVFFMPEG and LibAV
FFMPEG and LibAV
 
Multimedia Services: Video
Multimedia Services: VideoMultimedia Services: Video
Multimedia Services: Video
 
Multimedia Services: Image
Multimedia Services: ImageMultimedia Services: Image
Multimedia Services: Image
 
Multimedia Services: Audio
Multimedia Services: AudioMultimedia Services: Audio
Multimedia Services: Audio
 
Evolución de las Herramientas de aprendizaje online con licencia libre
Evolución de las Herramientas de aprendizaje online con licencia libreEvolución de las Herramientas de aprendizaje online con licencia libre
Evolución de las Herramientas de aprendizaje online con licencia libre
 
Sockets ipv4
Sockets ipv4Sockets ipv4
Sockets ipv4
 
Mecanismos IPC system V en Linux
Mecanismos IPC system V en LinuxMecanismos IPC system V en Linux
Mecanismos IPC system V en Linux
 
Señales en Linux
Señales en LinuxSeñales en Linux
Señales en Linux
 
Introducción al diseño grafico con software libre
Introducción al diseño grafico con software libreIntroducción al diseño grafico con software libre
Introducción al diseño grafico con software libre
 
Moodle avanzado - Julio 2012
Moodle avanzado - Julio 2012Moodle avanzado - Julio 2012
Moodle avanzado - Julio 2012
 
Akademy 2013 bilbao_proposal
Akademy 2013 bilbao_proposalAkademy 2013 bilbao_proposal
Akademy 2013 bilbao_proposal
 
Web 2.0 (2010ko abendua) euskeraz
Web 2.0 (2010ko abendua) euskerazWeb 2.0 (2010ko abendua) euskeraz
Web 2.0 (2010ko abendua) euskeraz
 
Sareen kudeaketa, SNMP eta RMON
Sareen kudeaketa, SNMP eta RMONSareen kudeaketa, SNMP eta RMON
Sareen kudeaketa, SNMP eta RMON
 
Cómo hacer una buena presentación
Cómo hacer una buena presentaciónCómo hacer una buena presentación
Cómo hacer una buena presentación
 
Ofimatica con Libreoffice
Ofimatica con LibreofficeOfimatica con Libreoffice
Ofimatica con Libreoffice
 
Gestión de redes, SNMP y RMON
Gestión de redes, SNMP y RMONGestión de redes, SNMP y RMON
Gestión de redes, SNMP y RMON
 
DHCP, DNS, whois
DHCP, DNS, whoisDHCP, DNS, whois
DHCP, DNS, whois
 
Web 2.0 (dic 2010)
Web 2.0 (dic 2010)Web 2.0 (dic 2010)
Web 2.0 (dic 2010)
 
Intro a los sistemas operativos móviles
Intro a los sistemas operativos móvilesIntro a los sistemas operativos móviles
Intro a los sistemas operativos móviles
 

Último

Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 

Último (20)

Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 

Funciones C (gnu/linux)

  • 1. Funciones de librerías C GNU/Linux Copyright (c) 2006, Jose Daniel Gutiérrez Porset josedaniel.gutierrez@ehu.es
  • 2. Licencia de Uso Acerca de este documento Copyright (c) 2006, Jose Daniel Gutiérrez Porset josedaniel.gutierrez@ehu.es Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre de GNU en su versión 1.2 o cualquier otra versión posterior publicada por la Free Software Foundation, siendo todo él invariante. Una copia de la licencia está disponible en la web de la Free Software Foundation, dentro de la sección titulada GNU Free Documentation License. Este documento ha sido realizado íntegramente con software libre. 2
  • 3. Índice Licencia de uso de este documento ● Ayuda de funciones ● Cuadros sinópticos ● Funciones ● 3
  • 4. Ayuda de funciones Paquete debian/ubuntu/...: manpages-dev ● Comandos desde la shell: ● apropos <todo_o_parte_de_nombre_funcion> – man nombre_funcion – man 2 nombre_funcion – man 3 nombre_funcion – 4
  • 5. Cuadros sinópticos Funciones de E/S mediante streams Tabla de funciones de gestión de streams en stdio.h ● Función E/S stream Contenido Destino Origen Comentarios printf S stdout texto Argumentos según formato putchar S stdout texto Carácter puts S stdout texto Cadena Añade salto de línea scanf E stdin texto Argumentos según formato getchar E stdin texto Carácter gets E stdin texto Cadena A diferencia de fgets no establece tamaño máx. fprintf S FILE * texto Argumentos según formato fputc S FILE * texto Carácter Hay una macro estándar equivalente: putc fputs S FILE * texto Cadena No añade salto de línea fscanf E FILE * texto Argumentos según formato fgetc E FILE * texto Carácter Hay una macro estándar equivalente: getc fgets E FILE * texto Cadena fwrite S FILE * binario Zona de memoria fread E FILE * binario Zona de memoria 5
  • 6. Cuadros sinópticos Funciones de streams Características comúnes a las funciones indicadas: ● Funcionan con buffers de entrada y salida, y no los limpian previamente. Tiene que ver con  – la espera a que esté el buffer lleno (en salida se mejora el rendimiento; en el caso de un  buffer de entrada, se puede editar). Los buffers pueden ser de tres tipos: completo, de línea  (ej. las de stdin) o nulo. En el caso de las funciones que leen de la entrada estándar, se hace eco a la pantalla si no  – hay redirección a fichero. Todas las indicadas son estándar, y existen tanto en GNU/Linux como en Ms DOS/Windows. – Hay otras funciones no estándares, dependientes de S.O. y que operan sobre la terminal (no  – sobre streams de E/S). Ej. en el caso de Ms, se definen en conio.h las siguientes: getche,  getch, putch. Su comportamiento difiere según hagan o no eco, etc. Regla nemotécnica para ubicación de parámetro FILE * en las declaraciones: siempre es el último  ● parámetro excepto en fprintf y fscanf donde es el primero 6
  • 7. Funciones void *calloc (size_t num_elem, size_t tam_bytes); ● malloc.h, stdlib.h – Reserva dinámica de memoria de num_elem x tam_bytes – Valor devuelto: puntero a la memoria asignada, o NULL si la  – petición falla void clearerr( FILE *stream); ● stdio.h – Limpia los indicadores de fin de fichero y error para un stream  – concreto 7
  • 8. Funciones int fclose (FILE *stream); ● stdio.h – Cerrar stream – Valor de retorno: en caso de éxito 0, y si error ­1 – int feof (FILE *stream); ● stdio.h – Indicador de fin de fichero – Valor de retorno: en caso de no haberse intentado leer o escribir al  – final del fichero devuelve 0 8
  • 9. Funciones int ferror (FILE *stream); ● stdio.h – Indicador de error – Valor de retorno: devuelve el último código de error  – correspondiente a una operación de streams sobre un stream  concreto, o 0 si no lo ha habido. int fflush (FILE *stream); ● stdio.h – Volcado de buffers de salida – 9
  • 10. Funciones int fgetc(FILE *stream); ● stdio.h – Idem que getchar sobre un stream – char *fgets(char *destino, int n, FILE *stream); ● stdio.h – Lee desde un stream como mucho n­1 caracteres, o hasta encontrar  – un salto de línea (que lo mantiene) o fin de fichero Añade un '0' al final – Valor de retorno: s en caso de éxito, y NULL en caso de error o si  – se llega al final del stream 10
  • 11. Funciones FILE *fopen (char *nomfich, char *modo); ● stdio.h – Abrir stream. Parámetro modo: – Modo ¿Puede ¿Puede Posición Si existe Si no existe el leer? escribir? en fichero el fichero fichero “r” Sí No Principio No lo borra Da error “r+” Sí Sí Principio No lo borra Da error “w” No Sí Principio Lo borra Lo crea “w+” Sí Sí Principio Lo borra Lo crea “a” No Sí Final No lo borra Lo crea “a+” Sí Sí Final No lo borra Lo crea ­    modo puede incluir la letra 'b' como carácter final o entre dos cualesquiera por   compatibilidad con ANSI C, pero en los sistemas POSIX (GNU/Linux,...) no tiene efecto ­    Si se abre con +, hay que sincronizar buffers entre operaciones: para leer después de  escribir, llamar antes a fflush o a una función de posicionamiento (fseek,fsetpos,rewind).  Para escribir tras leer, hacer un reposicionamiento, a no ser que sea al final del fichero Valor de retorno: en caso de error, devuelve NULL – 11
  • 12. Funciones int fprintf(FILE *stream, const char ● *formato, ...); stdio.h – Idem que printf sobre un stream – void __fpurge(FILE *stream); ● stdio_ext.h – Volcado de buffers de entrada – No es estándar: Sólo en GNU/Linux – 12
  • 13. Funciones int fputc(int caracter, FILE *stream); ● stdio.h – Idem que putchar sobre un stream – int fputs(const char *origen, FILE *stream); ● stdio.h – Idem que puts sobre un stream – No añade 'n' – 13
  • 14. Funciones size_t fread( void *ptr, size_t tam_bytes, size_t ● num_elem, FILE *stream); stdio.h – Lectura de elementos de memoria – Valor de retorno: nº de elementos (no de caracteres) leídos  – correctamente. Si ocurre un error o se llega al fin­de­fichero, el  valor devuelto es un nº menor del esperado (o cero). fread no distingue entre fin­de­fichero y error, así que quien llame  a esta función debe emplear feof y ferror para determinar qué ha  ocurrido. void free (void * ptr); ● malloc.h, stdlib.h – Liberación de memoria reservada dinámicamente – 14
  • 15. Funciones FILE *freopen(char *nomfich, char *modo, ● FILE *stream); stdio.h – Redireccionar un stream: se abre el fichero nomfich y le asocia el   – stream __stream. Éste se cierra si existe. El argumento modo se emplea igual que en la función fopen. – Un uso típico es cambiar el fichero asociado con un stream  – estándar (stderr, stdin, o stdout). Valor de retorno: en caso de error, devuelve NULL – 15
  • 16. Funciones int fscanf(FILE *stream, const char *formato, ...); ● stdio.h – Idem que scanf aplicado sobre un stream – int fseek (FILE *stream, long int offset, int ● origen); stdio.h – Desplazar indicador de posición un offset según origen: – SEEK_SET: relativo al comienzo del fichero (offset>0) ● SEEK_CUR: relativo a la posición actual (offset positivo o negativo) ● SEEK_END: relativo al final del fichero (offset<0) ● Valor de retorno: en caso de éxito 0, y si error ­1 – 16
  • 17. Funciones long int ftell (FILE *stream); ● stdio.h – Obtener el valor actual del indicador de posición de un stream – Valor de retorno: en caso de error ­1 – 17
  • 18. Funciones size_t fwrite (const void *ptr, size_t tam_bytes, ● size_t num_elem, FILE *stream); stdio.h – Escritura de elementos de memoria – Valor de retorno: nº de elementos (no de caracteres) escritos  – correctamente. Si ocurre un error o se llega al fin­de­fichero, el  valor devuelto es un nº menor del esperado (o cero). 18
  • 19. Funciones int getchar(void); ● stdio.h – Lee de stdin un carácter – Valor de retorno: carácter leído como un unsigned char modelado  – a un int o EOF al llegar al final de la entrada o en caso de error. char *gets (char *destino); ● stdio.h – Lee de stdin hasta encontrar un salto de línea (que sustituye por  – '0') o EOF No controla desbordamiento de buffer – Valor de retorno: s en caso de éxito, y NULL en caso de error o si  – se llega al final del stream 19
  • 20. Funciones void *malloc (size_t tam_bytes); ● malloc.h, stdlib.h – Reserva dinámica de memoria de tam_bytes – Valor de retorno: puntero a la memoria asignada, o NULL si la  – petición falla 20
  • 21. Funciones int printf (const char *formato, ...); ● stdio.h – Saca por stdout los argumentos formateándolos según una cadena  – de control (ver cuadro) Muy importante: ha de haber correspondencia entre: – El nº de parámetros y el nº de % ● Los tipos de los argumentos y los tipos  indicados con % ● Valor de retorno: nº de caracteres impresos. Si se encuentra un  – error de salida, se devuelve un valor negativo. 21
  • 22. Funciones Cadena de control: “%­+ 0w.pmc” (obligatorio: c) – - justif. izda. + sacar signo espacio espacio si no hay signo 0 rellenar con ceros (si no está justif. a izda.) w mínima anchura de campo p precisión m carácter de conversión: ● h: short int ● l: long int ● L: long double c carácter de conversión: ● d,i: int ● o: octal ● u: unsigned ● x,X: hexadecimal ● f: float y double ● e,E: exponencial ● g,G: idem que f, e, E según el exponente ● c: char ● s: cadena ● p: puntero 22
  • 23. Funciones int putchar(int caracter); ● stdio.h – Saca por stdout un carácter – Valor de retorno: el carácter escrito como un unsigned char  – modelado a un int o EOF en caso de error int puts (char *cadena); ● stdio.h – Saca por stdout una cadena – Añade 'n' – Valor de retorno: número no negativo si acaban bien, o EOF en  – caso de error 23
  • 24. Funciones void *realloc (void *ptr, size_t tam_bytes); ● malloc.h, stdlib.h – Reserva dinámica de memoria de tam_bytes a partir de una zona  – ya reservada Valor de retorno: puntero a la memoria asignada, o NULL si la  – petición falla 24
  • 25. Funciones int remove(const char *pathname); ● stdio.h – Borrado de fichero – Valor de retorno: en caso de éxito 0, y si error ­1 – int rename(const char *oldpath, const char ● *newpath); stdio.h – Renombrar fichero – Valor de retorno: en caso de éxito 0, y si error ­1 – 25
  • 26. Funciones void rewind (FILE *stream); ● stdio.h – Desplazar el cursor del fichero al inicio. – Es equivalente a fseek(stream, 0L, SEEK_SET). – 26
  • 27. Funciones int scanf (const char *formato, ...); ● stdio.h – Lee de stdin e intenta convertir a tipos según según el formato indicado  – por una cadena de control. El  análisis acaba cuando  un  carácter de  la  entrada no concuerda con un carácter del formato, o bien cuando una  conversión no puede realizarse. En este caso el resto de caracteres queda  en el buffer de entrada. Separador de argumentos en la cadena de control: – En la cadena de control se interpretan igual el espacio en blanco, el  ● tabulador y el salto de línea.  Uno de éstos concuerda con cualquier  cantidad de espacio en blanco, incluyendo ninguna, en la entrada. Se puede emplear otro carácter. ● No coge el carácter de fin de línea sino que éste se elimina – No controla desbordamiento de buffer para el caso de %s – 27
  • 28. Funciones Cadena de control: “wmc” (obligatorio: c) – w mínima anchura de campo m carácter de conversión opcional: ● h: shortint ● l: long int o long double ● L: long double c carácter de conversión: ● d,i: int ● o: octal ● u: unsigned ● x,X: hexadecimal ● f,e,g,E: float ● lf: double ● e, E: exponencial ● c: char ● s: cadena ● p: puntero En el caso de introducir números seguidos, puede inducir a confusión.  – Ej.”%d%f” si se mete 234.567 hay varias posibilidades Valor de retorno: nº de conversiones exitosas o el valor EOF si ha habido  – 28 un fallo de entrada antes de ninguna conversión
  • 29. Funciones int sprintf (char *destino, const char ● *formato, ...); stdio.h – Idem que printf sobre una cadena – Añade '0' al final – int sscanf (char *destino, const char ● *formato, ...); stdio.h – Idem que scanf sobre una cadena – 29
  • 30. Funciones char *strcat (char *destino, char *cadena); ● string.h – Concatenación de una cadena detrás de otra – No controla desbordamiento de buffer – Valor de retorno: puntero a la cadena destino – char *strchr (char *cadena, int caracter); ● string.h – Búsqueda de un carácter en una cadena, de izda. a dcha. – Valor de retorno: puntero al elemento de la cadena con el carácter  – coincidente, o NULL si el carácter no se ha encontrado 30
  • 31. Funciones int strcmp (char *cadena1, char *cadena2); ● string.h – Comparación de dos cadenas – Valor de retorno: entero menor que, igual a, o mayor que cero si s1  – se encuentra que es, respectivamente, menor que, igual a, o mayor  que s2 char *strcpy (char *destino, char *origen); ● string.h – Copia de una cadena a otra – No controla desbordamiento de buffer – Valor de retorno: puntero a la cadena destino – 31
  • 32. Funciones size_t strlen (char *cadena); ● string.h – Longitud de una cadena (nº de caracteres) – Valor de retorno: nº caracteres – char *strrchr (char *cadena, int caracter); ● string.h – Búsqueda de un carácter en una cadena, de dcha. a izda.  – char *strstr (char *cadena1, char *cadena2); ● string.h – Búsqueda de cadena cadena2 en cadena1, de izda a dcha – Valor de retorno: puntero a la aparición, o NULL si no se encuentra – 32