SlideShare una empresa de Scribd logo
Programación 1
Cadenas en C
Angel Vázquez-Patiño
angel.vazquezp@ucuenca.edu.ec
Departamento de Ciencias de la Computación
Universidad de Cuenca
19 de septiembre de 2017
19/09/17 Angel Vázquez-Patiño 2/59
Objetivos
1. Manipular caracteres y cadenas en C
2. Utilizar librerías estándar de C para la
manipulación de caracteres y cadenas
3. Usar punteros para el manejo de cadenas y
caracteres en C
4. Convertir tipos de datos en C
19/09/17 Angel Vázquez-Patiño 3/59
Contenido
Cadenas en C
Lectura de una cadena desde el teclado
Bibliotecas estándar
ctype.h
string.h
Conversión de tipos
Ejercicios
19/09/17 Angel Vázquez-Patiño 4/59
Cadenas en C
19/09/17 Angel Vázquez-Patiño 5/59
Cadenas en C
●
Las cadenas son realmente un arreglo
unidimensional de caracteres terminados por
un carácter nulo ‘0’
●
Así una cadena terminada en nulo contiene los
caracteres que comprenden la cadena
seguidos por un null
19/09/17 Angel Vázquez-Patiño 6/59
Cadenas en C
Declaración e inicialización de cadena “Hola”
●
Por el carácter nulo al final se reserva un
elemento más en el arreglo
char cad[5] = {‘H’,’o’,’l’,’a’,’0’};
●
Siguiendo la regla de inicialización de arreglos
char cad[] = “Hola”;
19/09/17 Angel Vázquez-Patiño 7/59
Cadenas en C
Representación de la cadena en memoria
19/09/17 Angel Vázquez-Patiño 8/59
Cadenas en C
Impresión de la cadena
1 #include <stdio.h>
2 int main(){
3 char cad[5] = {'H', 'o', 'l',
'a', '0'};
4 printf("Saludo: %sn", cad);
5 }
19/09/17 Angel Vázquez-Patiño 9/59
Cadenas en C
Recorrido de la cadena (1)
1 int main(){
2 char cad[5] = {'H', 'o', 'l',
'a', '0'};
3 int i = 0;
4 while(cad[i])
5 putchar(cad[i++]);
6 }
19/09/17 Angel Vázquez-Patiño 10/59
Cadenas en C
Recorrido de la cadena (2)
1 int main(){
2 char cad[5] = {'H', 'o', 'l',
'a', '0'};
3 for(int j = 0; j<5; j++)
4 printf("%c", cad[j]);
5 }
19/09/17 Angel Vázquez-Patiño 11/59
Lectura de una cadena desde el
teclado
19/09/17 Angel Vázquez-Patiño 12/59
Leer una cadena desde el teclado
1 int main(){
2 char nombre[50];
3 printf("Ingrese su nombre
completo (50 letras máximo):
");
4 scanf("%s", nombre);
5 printf("Nombre: %s", nombre);
6 }
19/09/17 Angel Vázquez-Patiño 13/59
Leer una cadena desde el teclado
1 int main(){
2 char nombre[50];
3 printf("Ingrese su nombre
completo (50 letras máximo): ");
4 scanf("%49[0-9a-zA-z ]",
nombre);
5 printf("Nombre: %s", nombre);
6 }
19/09/17 Angel Vázquez-Patiño 14/59
Leer una cadena desde el teclado
1 int main(){
2 char nombre[50];
3 printf("Ingrese su nombre
completo (50 letras máximo):
");
4 scanf("%[^n]s", nombre);
5 printf("Nombre: %s", nombre);
6 }
19/09/17 Angel Vázquez-Patiño 15/59
Leer una cadena desde el teclado
1 #include<stdio.h>
2 int main(){
3 char nombre[50];
4 printf("Ingrese su nombre completo
(50 letras máximo): ");
5 gets(nombre); // warning: the
`gets' function is dangerous and
should not be used.
6 printf("Nombre: %s", nombre);}
19/09/17 Angel Vázquez-Patiño 16/59
Leer una cadena desde el teclado
1 #include<stdio.h>
2 int main(){
3 char nombre[50];
4 printf("Ingrese su nombre completo
(50 letras máximo): ");
5 fgets(nombre, 50, stdin);
6 printf("Nombre: %s", nombre);}
Vea https://goo.gl/VE5N1D
19/09/17 Angel Vázquez-Patiño 17/59
Ejercicios
Ejercicio
●
Escribir una función que reciba como
parámetros una cadena de caracteres y un
carácter; la función devuelve el número de
veces que se encuentra el carácter en la
cadena
19/09/17 Angel Vázquez-Patiño 18/59
1 #include <stdio.h>
2 int contarCaracteres(char *str, char caracter){
3 int i = 0, cont = 0;
4 while(str[i])
5 if(str[i++] == caracter) cont++;
6 return cont;}
7 int main(){
8 char cadena[99] = "UCuenca", caracter = 'c';
9 int salida = contarCaracteres(cadena,
caracter);
10 printf("Caracteres %c: %i", caracter,
salida);
11 return(0);}
19/09/17 Angel Vázquez-Patiño 19/59
Ejercicios
Ejercicio
●
Implemente una función que devuelva el
número de palabras de una cadena.
19/09/17 Angel Vázquez-Patiño 20/59
1 int numPalabras(char cad[]){
2 int np=0, i=0;
3 while(cad[i]){
4 if(cad[i++] == ' ') np++;}
5 return ++np;}
6 int main(){
7 char cadena[100];
8 scanf("%[^n]s", cadena);
9 int n = numPalabras(cadena);
10 printf("Número de palabras: %i",
n);}
19/09/17 Angel Vázquez-Patiño 21/59
Bibliotecas estándar
19/09/17 Angel Vázquez-Patiño 22/59
ctype.h
19/09/17 Angel Vázquez-Patiño 23/59
ctype.h
int isalpha(int c)
● Verifica si el caracter c es alfabético
int isdigit(int c)
● Verifica si el caracter c es dígito decimal
int tolower(int c)
● Convierte el carácter c a minúscula
int toupper(int c)
● Convierte el carácter c a mayúscula
19/09/17 Angel Vázquez-Patiño 24/59
1 #include <stdio.h>
2 #include <ctype.h>
3 int main(){
4 int i = 0; char cad[100];
5 scanf("%[^n]s", cad);
6 while(cad[i])
7 putchar(tolower(cad[i++]));
8 i=0; printf("n");
9 while(cad[i])
10 putchar(toupper(cad[i++]));}
19/09/17 Angel Vázquez-Patiño 25/59
ctype.h
Ejercicio 1
●
Contar el número de letras del alfabeto español
de un texto ingresado.
19/09/17 Angel Vázquez-Patiño 26/59
1 int main(){
2 char cad[100];
3 scanf("%[^n]s", cad);
4 int i = 0, nLetAbc = 0;
5 while(cad[i]){
6 if(isalpha(cad[i]) || cad[i] == -79
|| cad[i] == -111) nLetAbc++;
7 i++;
8 }
9 printf("Letras del alfabeto: %d.",
nLetAbc);}
19/09/17 Angel Vázquez-Patiño 27/59
ctype.h
Ejercicio 2
●
Leer una cadena y decir si es un número entero
no negativo o real no negativo válido.
19/09/17 Angel Vázquez-Patiño 28/59
1 int main(){
2 char cad[100]; scanf("%[^n]s", cad);
3 int i = 0, nPun = 0, nDec = 0;
4 while(cad[i]){
5 if(isdigit(cad[i])) nDec++;
6 else if(cad[i] == '.') nPun++;
7 i++;}
8 if(nDec == i) printf("Número
entero.");
9 else if(nDec == i-1 && nPun == 1)
printf("Número real.");
10 else printf("Número no válido.");}
19/09/17 Angel Vázquez-Patiño 29/59
ctype.h
Ejercicio 3
●
Implemente una función que reciba una cadena
y una letra, y coloque en mayúsculas cada
ocurrencia de la letra (case sensitive) en la
cadena (la función debe modificar la cadena en
sí).
19/09/17 Angel Vázquez-Patiño 30/59
1 void transMayuscula(char cad[], char letra){
2 int i=0;
3 while(cad[i]){
4 if(cad[i] == letra)
5 cad[i]=toupper(letra);
6 i++;}}
7 int main(){
8 char cadena[100], let;
9 scanf("%[^n]s", cadena);
10 let = getchar();
11 transMayuscula(cadena, let);
12 printf("Cadena: %s", cadena);}
19/09/17 Angel Vázquez-Patiño 31/59
string.h
19/09/17 Angel Vázquez-Patiño 32/59
string.h
Vea los vídeos
Aprende Programación en C || Programación ATS
1) https://youtu.be/YqoV6UMQEcE
2) https://youtu.be/iW_zzg2ppvg
3) https://youtu.be/_uk3pSfTpUE
4) https://youtu.be/k2Bm1rc4LGY
5) https://youtu.be/1uBfk0Gn0io
6) https://youtu.be/qbBG8rjpOW4
19/09/17 Angel Vázquez-Patiño 33/59
string.h
char *strcpy(char *dest, const char
*src)
● Copia la cadena apuntada por src a dest
char *strcat(char *dest, const char
*src)
● Concatena la cadenas apuntada por src al final
de la cadena apuntada por dest
size_t strlen(const char *str)
● Calcula la longitud de la cadena str sin incluir el
carácter nulo de terminación
19/09/17 Angel Vázquez-Patiño 34/59
string.h
int strcmp(const char *str1, const
char *str2)
●
0 si str1 = str2; <0 si str1 < str2; >0 si str1 > str2
char *strchr(const char *str, int c)
● Busca la primera ocurrencia del carácter c (un
unsigned char) en la cadena apuntada por el
argumento str
19/09/17 Angel Vázquez-Patiño 35/59
string.h
char *strstr(const char *haystack,
const char *needle)
●
Encuentra la primera ocurrencia de la cadena
needle completa (sin incluir el carácter nulo de
terminación) que aparece en la cadena
haystack
char *strtok(char *str, const char
*delim)
● Separa la cadena str en una serie de tokens
separados por delim
19/09/17 Angel Vázquez-Patiño 36/59
#include <stdio.h>
#include <string.h>
int main (){
char cad1[] = "Hola ";
char cad2[] = "Mundo"; char cad3[2];
strcpy(cad3, cad1); // copia cad1 en cad3
printf("strcpy(cad3, cad1): %sn", cad3);
strcat(cad1, cad2); // concatena
printf("strcat(cad1, cad2): %sn", cad1);
// Longitud cad1 después de concatenación
printf("strlen(cad1):%d", strlen(cad1));}
19/09/17 Angel Vázquez-Patiño 37/59
sprintf
1 #include <stdio.h>
2 int main(){
3 char nomCom[50];
4 char nombre[] = "Angel";
5 char apellido[] = "Vázquez";
6 sprintf(nomCom, "%s %s", nombre,
apellido);
7 printf("Nombre completo: %s.",
nomCom);}
19/09/17 Angel Vázquez-Patiño 38/59
string.h
Ver si una cadena está dentro de otra
1 int main(){
2 char cad[100], subcad[100];
3 scanf("%[^n]s", cad);
4 scanf("%[^n]s", subcad);
5 if(strstr(cad, subcad) != NULL)
6 printf("Sí contiene.");
7 else
8 printf("No contiene.");}
19/09/17 Angel Vázquez-Patiño 39/59
string.h
Posición de la primera ocurrencia de una
subcadena
1 int main(){
2 char a[] = "Hola mundo";
3 char *b = strstr(a, "mundo");
4 printf("b: %pn*b: %cn", b, *b);
5 printf("na: %pn*a: %cn", a, *a);
6 printf("nPosición: %i", (int)(b-
a));}
19/09/17 Angel Vázquez-Patiño 40/59
string.h
Separar una cadena en tokens
1 int main(){
2 char str[60] = "Este es- mi curso - de C -en
la -- Universidad de Cuenca";
3 const char s[2] = "-"; char *token;
4 token = strtok(str, s);//obtiene el primer
token
5 while(token != NULL){ // va a través de
6 printf( " %sn", token ); // los otros
tokens
7 token = strtok(NULL, s);}
8 return(0);}
19/09/17 Angel Vázquez-Patiño 41/59
string.h
Ejercicio
●
Solicitar el ingreso de los apellidos de dos
personas. Mostrar un mensaje indicando si son
iguales o distintos.
19/09/17 Angel Vázquez-Patiño 42/59
1 int main()
2 {
3 char ape1[100], ape2[100];
4 scanf("%s", ape1);
5 scanf("%s", ape2);
6 if(strcmp(ape1, ape2))
7 printf("Apellidos diferentes");
8 else
9 printf("Apellidos iguales");
10 }
19/09/17 Angel Vázquez-Patiño 43/59
Conversión de tipos
19/09/17 Angel Vázquez-Patiño 44/59
Conversión de tipos
Cadena a entero
1 #include<stdio.h>
2 #include<stdlib.h> // para atoi
3 int main(){
4 char cadena[] = "48";
5 int num = atoi(cadena);
6 printf("%d", num*2);}
19/09/17 Angel Vázquez-Patiño 45/59
Conversión de tipos
Cadena a float
1 #include<stdio.h>
2 #include<stdlib.h> // para atof
3 int main(){
4 char cadena[] = "48.098";
5 float num = atof(cadena);
6 printf("%f", num);}
19/09/17 Angel Vázquez-Patiño 46/59
Conversión de tipos
Entero a cadena
1 #include<stdio.h> // sprintf
2 int main(){
3 int entero = 368;
4 char cad[4];
5 sprintf(cad, "%d", entero);
6 printf("%s", cad);}
19/09/17 Angel Vázquez-Patiño 47/59
Conversión de tipos
Entero a cadena
● También puede revisar la función itoa
● itoa no es estándar
●
https://goo.gl/Cv7r7c
19/09/17 Angel Vázquez-Patiño 48/59
Conversión de tipos
Flotante a cadena
●
Vea https://goo.gl/KjIdgx
19/09/17 Angel Vázquez-Patiño 49/59
Conversión de tipos
Ejercicio
●
Solicitar el ingreso, como cadenas, del nombre
y edad de dos personas (validar que sea una
edad correcta entre 0 y 130 años). Mostrar el
nombre de la persona con mayor edad.
19/09/17 Angel Vázquez-Patiño 50/59
1 int main(){
2 char nom1[50],eda1[3],nom2[50],eda2[3];
3 scanf("%s", nom1);
4 do{ scanf("%s", eda1);
5 }while(atoi(eda1)<0 || atoi(eda1)>130);
6 scanf("%s", nom2);
7 do{ scanf("%s", eda2);
8 }while(atoi(eda2)<0 || atoi(eda2)>130);
9 if(atoi(eda1) > atoi(eda2))
10 printf("Mayor: %s", nom1);
11 else printf("Mayor: %s", nom2);}
19/09/17 Angel Vázquez-Patiño 51/59
Ejercicios
19/09/17 Angel Vázquez-Patiño 52/59
Ejercicios
1) Implemente la función _Bool equals(const
char *str1, const char *str2) que
devuelve true/false si las cadenas enviadas
como argumento son/(no son) iguales. Es case
sensitive
2) Implemente la función _Bool
equalsIgnoreCase(const char *str1,
const char *str2) que devuelve true/false
si las cadenas enviadas como argumento son/
(no son) iguales. Es no case sensitive.
19/09/17 Angel Vázquez-Patiño 53/59
Ejercicios
3) Implemente la función void substring(char
*dest, const char *str, size_t pos)
que devuelve una subcadena dest desde la
posición pos hasta el final de la cadena str
4) Implemente la función void substring(char
*dest, const char *str, size_t pos1,
size_t pos2) que devuelve una subcadena
dest desde la posición pos1 hasta la posición
pos2 de la cadena str
19/09/17 Angel Vázquez-Patiño 54/59
Ejercicios
5) Implemente la función size_t
lastIndexOf(const char *cad, const
char *subcad) que da la posición de la
primera ocurrencia de la subcadena subcad
comparando la ocurrencia de derecha a
izquierda en cad
19/09/17 Angel Vázquez-Patiño 55/59
Conceptos y términos importantes
19/09/17 Angel Vázquez-Patiño 56/59
Conceptos y términos importantes
●
Maneras de leer cadenas desde el teclado
●
Una cadena es un arreglo de caracteres
●
Punteros
●
Uso de punteros en las funciones
●
Transformar caracteres o cadenas a números
19/09/17 Angel Vázquez-Patiño 57/59
Referencias
●
Gustedt, J., 2017. Modern C. France.
http://icube-icps.unistra.fr/index.php/File:Moder
nC.pdf
●
C - Strings,
https://www.tutorialspoint.com/cprogramming/c_
strings.htm
●
How do you allow spaces to be entered using
scanf, https://goo.gl/UOk4e
●
C Standard Library Reference Tutorial,
https://www.tutorialspoint.com/c_standard_librar
y/
19/09/17 Angel Vázquez-Patiño 58/59
Referencias
●
Trim a string in C, https://goo.gl/SvJKk
Revisar
●
Sección 6.1. Arrays del libro de Gustedt (2017)
●
Vázquez-Patiño, A., 2017. Ejercicios Básicos
de Programación, 1st ed. Departamento de
Ciencias de la Computación, Universidad de
Cuenca, Cuenca, Ecuador.
https://goo.gl/X0UTxi
19/09/17 Angel Vázquez-Patiño 59/59
Preguntas

Más contenido relacionado

La actualidad más candente

Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
Valentin Manzano
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
maria alejandra
 
Ejercicios de programación en C (Estructuras condicionales-Selectivas)
Ejercicios de programación en C (Estructuras condicionales-Selectivas)Ejercicios de programación en C (Estructuras condicionales-Selectivas)
Ejercicios de programación en C (Estructuras condicionales-Selectivas)
Maynor Mendoza
 
Arreglos o dimensiones en pseint
Arreglos o dimensiones en pseintArreglos o dimensiones en pseint
Arreglos o dimensiones en pseint
Don Augusto
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
Alex Uhu Colli
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
Cesar Oswaldo Osorio Agualongo
 
Quicksort
QuicksortQuicksort
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
Juan Astudillo
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
Angel Vázquez Patiño
 
Metodo quicksort
Metodo quicksortMetodo quicksort
Metodo quicksort
Patricia Correa
 
Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)
Pedro Antonio Villalta (Pavillalta)
 
Pilas estáticas. IESIT
Pilas estáticas. IESITPilas estáticas. IESIT
Pilas estáticas. IESIT
Blanca Elia Jiménez Guzmán
 
Estructura de Datos: Lista
Estructura de Datos: ListaEstructura de Datos: Lista
Estructura de Datos: Lista
Emerson Garay
 
Ecuaciones Diferenciales - La Transformada de Laplace
Ecuaciones Diferenciales - La Transformada de LaplaceEcuaciones Diferenciales - La Transformada de Laplace
Ecuaciones Diferenciales - La Transformada de Laplace
Kike Prieto
 
Arreglo de punteros
Arreglo de punterosArreglo de punteros
Arreglo de punteros
pedreror1
 
Pruebas de escritorio
Pruebas de escritorioPruebas de escritorio
Pruebas de escritorio
Videoconferencias UTPL
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
Ana Castro
 
Estructuras de seleccion
Estructuras de seleccionEstructuras de seleccion
Estructuras de seleccion
Clariza
 
ESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINTESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINT
JuanCardenas501369
 
Ejercicios sobre Transformada de Laplace
Ejercicios sobre Transformada de LaplaceEjercicios sobre Transformada de Laplace
Ejercicios sobre Transformada de Laplace
Jeickson Sulbaran
 

La actualidad más candente (20)

Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Ejercicios de programación en C (Estructuras condicionales-Selectivas)
Ejercicios de programación en C (Estructuras condicionales-Selectivas)Ejercicios de programación en C (Estructuras condicionales-Selectivas)
Ejercicios de programación en C (Estructuras condicionales-Selectivas)
 
Arreglos o dimensiones en pseint
Arreglos o dimensiones en pseintArreglos o dimensiones en pseint
Arreglos o dimensiones en pseint
 
Cuadro sinóptico estructuras de datos y su clasificación
Cuadro sinóptico   estructuras de datos y su clasificaciónCuadro sinóptico   estructuras de datos y su clasificación
Cuadro sinóptico estructuras de datos y su clasificación
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Quicksort
QuicksortQuicksort
Quicksort
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Metodo quicksort
Metodo quicksortMetodo quicksort
Metodo quicksort
 
Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)
 
Pilas estáticas. IESIT
Pilas estáticas. IESITPilas estáticas. IESIT
Pilas estáticas. IESIT
 
Estructura de Datos: Lista
Estructura de Datos: ListaEstructura de Datos: Lista
Estructura de Datos: Lista
 
Ecuaciones Diferenciales - La Transformada de Laplace
Ecuaciones Diferenciales - La Transformada de LaplaceEcuaciones Diferenciales - La Transformada de Laplace
Ecuaciones Diferenciales - La Transformada de Laplace
 
Arreglo de punteros
Arreglo de punterosArreglo de punteros
Arreglo de punteros
 
Pruebas de escritorio
Pruebas de escritorioPruebas de escritorio
Pruebas de escritorio
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
 
Estructuras de seleccion
Estructuras de seleccionEstructuras de seleccion
Estructuras de seleccion
 
ESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINTESTRUCTURAS CONDICIONALES PARA. PSEINT
ESTRUCTURAS CONDICIONALES PARA. PSEINT
 
Ejercicios sobre Transformada de Laplace
Ejercicios sobre Transformada de LaplaceEjercicios sobre Transformada de Laplace
Ejercicios sobre Transformada de Laplace
 

Destacado

Programación 1: funciones en C
Programación 1: funciones en CProgramación 1: funciones en C
Programación 1: funciones en C
Angel Vázquez Patiño
 
Programación 1: búsquedas y ordenamientos
Programación 1: búsquedas y ordenamientosProgramación 1: búsquedas y ordenamientos
Programación 1: búsquedas y ordenamientos
Angel Vázquez Patiño
 
Teoría de redes: presentación
Teoría de redes: presentaciónTeoría de redes: presentación
Teoría de redes: presentación
Angel Vázquez Patiño
 
Machine learning: presentación
Machine learning: presentaciónMachine learning: presentación
Machine learning: presentación
Angel Vázquez Patiño
 
Programación 1: tipos básicos de datos en C
Programación 1: tipos básicos de datos en CProgramación 1: tipos básicos de datos en C
Programación 1: tipos básicos de datos en C
Angel Vázquez Patiño
 
Programación 1: arreglos en C
Programación 1: arreglos en CProgramación 1: arreglos en C
Programación 1: arreglos en C
Angel Vázquez Patiño
 

Destacado (6)

Programación 1: funciones en C
Programación 1: funciones en CProgramación 1: funciones en C
Programación 1: funciones en C
 
Programación 1: búsquedas y ordenamientos
Programación 1: búsquedas y ordenamientosProgramación 1: búsquedas y ordenamientos
Programación 1: búsquedas y ordenamientos
 
Teoría de redes: presentación
Teoría de redes: presentaciónTeoría de redes: presentación
Teoría de redes: presentación
 
Machine learning: presentación
Machine learning: presentaciónMachine learning: presentación
Machine learning: presentación
 
Programación 1: tipos básicos de datos en C
Programación 1: tipos básicos de datos en CProgramación 1: tipos básicos de datos en C
Programación 1: tipos básicos de datos en C
 
Programación 1: arreglos en C
Programación 1: arreglos en CProgramación 1: arreglos en C
Programación 1: arreglos en C
 

Similar a Programación 1: cadenas en C

Cadenas y punteros.ppt
Cadenas y punteros.pptCadenas y punteros.ppt
Cadenas y punteros.ppt
Jacqueline Villarroel Valenzuela
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenas
horusblom
 
Ejercicios
EjerciciosEjercicios
Ejercicios
Noeli Orellana
 
Funciones str
Funciones strFunciones str
Funciones str
Sharliemaster
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
Jhonathan Villalobos
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
Jhonathan Villalobos
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
Jhonathan Villalobos
 
Laboratorio1 entrada-salida de datos / Lenguance C
Laboratorio1   entrada-salida de datos / Lenguance CLaboratorio1   entrada-salida de datos / Lenguance C
Laboratorio1 entrada-salida de datos / Lenguance C
Alejandro Enrique Téllez López
 
Practicas de programacion 11 20
Practicas de programacion 11 20Practicas de programacion 11 20
Practicas de programacion 11 20
Dariio Lopezz Young
 
Entrada y salida de datos en c
Entrada y salida de datos en cEntrada y salida de datos en c
Entrada y salida de datos en c
Denisse C
 
Ejercicios programacion cortos
Ejercicios programacion cortosEjercicios programacion cortos
Ejercicios programacion cortos
milanollarves
 
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
Beydasanchezhernandez
 
Comandos
ComandosComandos
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
Beydasanchezhernandez
 
Ejercicios de programación.
Ejercicios de programación.Ejercicios de programación.
Ejercicios de programación.
Javier Cuenca
 
Cadenas
CadenasCadenas
Rubenmajano
RubenmajanoRubenmajano
Rubenmajano
Elias Ruben Majano
 
Deber de programación
Deber de programación  Deber de programación
Deber de programación
legnasilvana
 
Tema 4 - Tipos datos avanzados (I)
Tema 4 - Tipos datos avanzados (I)Tema 4 - Tipos datos avanzados (I)
Tema 4 - Tipos datos avanzados (I)
Pablo Haya
 
Taller 1 de estructuras
Taller 1 de estructurasTaller 1 de estructuras
Taller 1 de estructuras
Paola Rodriguez
 

Similar a Programación 1: cadenas en C (20)

Cadenas y punteros.ppt
Cadenas y punteros.pptCadenas y punteros.ppt
Cadenas y punteros.ppt
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenas
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Funciones str
Funciones strFunciones str
Funciones str
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Laboratorio1 entrada-salida de datos / Lenguance C
Laboratorio1   entrada-salida de datos / Lenguance CLaboratorio1   entrada-salida de datos / Lenguance C
Laboratorio1 entrada-salida de datos / Lenguance C
 
Practicas de programacion 11 20
Practicas de programacion 11 20Practicas de programacion 11 20
Practicas de programacion 11 20
 
Entrada y salida de datos en c
Entrada y salida de datos en cEntrada y salida de datos en c
Entrada y salida de datos en c
 
Ejercicios programacion cortos
Ejercicios programacion cortosEjercicios programacion cortos
Ejercicios programacion cortos
 
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
 
Comandos
ComandosComandos
Comandos
 
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
 
Ejercicios de programación.
Ejercicios de programación.Ejercicios de programación.
Ejercicios de programación.
 
Cadenas
CadenasCadenas
Cadenas
 
Rubenmajano
RubenmajanoRubenmajano
Rubenmajano
 
Deber de programación
Deber de programación  Deber de programación
Deber de programación
 
Tema 4 - Tipos datos avanzados (I)
Tema 4 - Tipos datos avanzados (I)Tema 4 - Tipos datos avanzados (I)
Tema 4 - Tipos datos avanzados (I)
 
Taller 1 de estructuras
Taller 1 de estructurasTaller 1 de estructuras
Taller 1 de estructuras
 

Más de Angel Vázquez Patiño

Funciones, límites y continuidad
Funciones, límites y continuidadFunciones, límites y continuidad
Funciones, límites y continuidad
Angel Vázquez Patiño
 
Integral definida e integración
Integral definida e integraciónIntegral definida e integración
Integral definida e integración
Angel Vázquez Patiño
 
Valores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficasValores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficas
Angel Vázquez Patiño
 
Derivada y diferenciación
Derivada y diferenciaciónDerivada y diferenciación
Derivada y diferenciación
Angel Vázquez Patiño
 
Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...
Angel Vázquez Patiño
 
Diferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calorDiferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calor
Angel Vázquez Patiño
 
Puntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO linealPuntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO lineal
Angel Vázquez Patiño
 
La ecuación diferencial de Legendre
La ecuación diferencial de LegendreLa ecuación diferencial de Legendre
La ecuación diferencial de Legendre
Angel Vázquez Patiño
 
Solución en series de y' = f(x,y)
Solución en series de y' = f(x,y)Solución en series de y' = f(x,y)
Solución en series de y' = f(x,y)
Angel Vázquez Patiño
 
Métodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante seriesMétodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante series
Angel Vázquez Patiño
 
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Angel Vázquez Patiño
 
Problemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuacionesProblemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuaciones
Angel Vázquez Patiño
 
Linealización de sistemas de primer orden
Linealización de sistemas de primer ordenLinealización de sistemas de primer orden
Linealización de sistemas de primer orden
Angel Vázquez Patiño
 
Sistemas de EDOs
Sistemas de EDOsSistemas de EDOs
Sistemas de EDOs
Angel Vázquez Patiño
 
Método de la secante
Método de la secanteMétodo de la secante
Método de la secante
Angel Vázquez Patiño
 
Iteraciones de punto fijo
Iteraciones de punto fijoIteraciones de punto fijo
Iteraciones de punto fijo
Angel Vázquez Patiño
 
Objetos y variables en Python
Objetos y variables en PythonObjetos y variables en Python
Objetos y variables en Python
Angel Vázquez Patiño
 
Definiciones de Error
Definiciones de ErrorDefiniciones de Error
Definiciones de Error
Angel Vázquez Patiño
 
Fundamentos de Computación y Programación
Fundamentos de Computación y ProgramaciónFundamentos de Computación y Programación
Fundamentos de Computación y Programación
Angel Vázquez Patiño
 
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Angel Vázquez Patiño
 

Más de Angel Vázquez Patiño (20)

Funciones, límites y continuidad
Funciones, límites y continuidadFunciones, límites y continuidad
Funciones, límites y continuidad
 
Integral definida e integración
Integral definida e integraciónIntegral definida e integración
Integral definida e integración
 
Valores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficasValores extremos y comportamiento de las funciones y de sus gráficas
Valores extremos y comportamiento de las funciones y de sus gráficas
 
Derivada y diferenciación
Derivada y diferenciaciónDerivada y diferenciación
Derivada y diferenciación
 
Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...Causality and climate networks approaches for evaluating climate models, trac...
Causality and climate networks approaches for evaluating climate models, trac...
 
Diferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calorDiferencias finitas y Ecuación de calor
Diferencias finitas y Ecuación de calor
 
Puntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO linealPuntos ordinarios y singularidades de una EDO lineal
Puntos ordinarios y singularidades de una EDO lineal
 
La ecuación diferencial de Legendre
La ecuación diferencial de LegendreLa ecuación diferencial de Legendre
La ecuación diferencial de Legendre
 
Solución en series de y' = f(x,y)
Solución en series de y' = f(x,y)Solución en series de y' = f(x,y)
Solución en series de y' = f(x,y)
 
Métodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante seriesMétodos de resolución de EDOs mediante series
Métodos de resolución de EDOs mediante series
 
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
Solución en series de EDOs no lineales de orden mayor a uno y de un sistema d...
 
Problemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuacionesProblemas que originan sistemas de ecuaciones
Problemas que originan sistemas de ecuaciones
 
Linealización de sistemas de primer orden
Linealización de sistemas de primer ordenLinealización de sistemas de primer orden
Linealización de sistemas de primer orden
 
Sistemas de EDOs
Sistemas de EDOsSistemas de EDOs
Sistemas de EDOs
 
Método de la secante
Método de la secanteMétodo de la secante
Método de la secante
 
Iteraciones de punto fijo
Iteraciones de punto fijoIteraciones de punto fijo
Iteraciones de punto fijo
 
Objetos y variables en Python
Objetos y variables en PythonObjetos y variables en Python
Objetos y variables en Python
 
Definiciones de Error
Definiciones de ErrorDefiniciones de Error
Definiciones de Error
 
Fundamentos de Computación y Programación
Fundamentos de Computación y ProgramaciónFundamentos de Computación y Programación
Fundamentos de Computación y Programación
 
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
Causality Strength Signatures for Measuring GCMs Performance: The South Ameri...
 

Último

DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
KeylaArlethTorresOrt
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
JaimmsArthur
 
Uso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptxUso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptx
OmarPadillaGarcia
 
1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf
raulnilton2018
 
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICAPRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
carmenquintana18
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
DanielMelndez19
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
PatoLokooGuevara
 
PPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdfPPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdf
EgorRamos1
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
sebastianpech108
 
muros de contencion, diseño y generalidades
muros de contencion, diseño y generalidadesmuros de contencion, diseño y generalidades
muros de contencion, diseño y generalidades
AlejandroArturoGutie1
 
SLIDEHARE.docx..........................
SLIDEHARE.docx..........................SLIDEHARE.docx..........................
SLIDEHARE.docx..........................
azulsarase
 
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdfEXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
hugodennis88
 
Presentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptxPresentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptx
ronnyrocha223
 
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptxPRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
brandonsinael
 
diagrama de flujo. en el área de ingeniería
diagrama de flujo. en el área de ingenieríadiagrama de flujo. en el área de ingeniería
diagrama de flujo. en el área de ingeniería
karenperalta62
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
pipex55
 
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapasexposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
raul958375
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
KristianSaavedra
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
DiegoAlexanderChecaG
 
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIAMETODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
LuisCiriacoMolina
 

Último (20)

DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
 
Uso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptxUso de equipos de protección personal.pptx
Uso de equipos de protección personal.pptx
 
1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf1. Introduccion a las excavaciones subterraneas (1).pdf
1. Introduccion a las excavaciones subterraneas (1).pdf
 
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICAPRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
PRIMERA Y SEGUNDA LEY DE LA TERMODINÁMICA
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
 
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdfFocos SSO Fin de Semana del 31 MAYO A  al 02 de JUNIO  de 2024.pdf
Focos SSO Fin de Semana del 31 MAYO A al 02 de JUNIO de 2024.pdf
 
PPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdfPPT suelos ensayo Proctor - laboratorio 4.pdf
PPT suelos ensayo Proctor - laboratorio 4.pdf
 
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
 
muros de contencion, diseño y generalidades
muros de contencion, diseño y generalidadesmuros de contencion, diseño y generalidades
muros de contencion, diseño y generalidades
 
SLIDEHARE.docx..........................
SLIDEHARE.docx..........................SLIDEHARE.docx..........................
SLIDEHARE.docx..........................
 
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdfEXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
 
Presentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptxPresentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptx
 
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptxPRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
 
diagrama de flujo. en el área de ingeniería
diagrama de flujo. en el área de ingenieríadiagrama de flujo. en el área de ingeniería
diagrama de flujo. en el área de ingeniería
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
 
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapasexposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
 
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIAMETODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
METODOLOGIA DE TRAZO Y REPLANTEO EN TOPOGRAFIA
 

Programación 1: cadenas en C

  • 1. Programación 1 Cadenas en C Angel Vázquez-Patiño angel.vazquezp@ucuenca.edu.ec Departamento de Ciencias de la Computación Universidad de Cuenca 19 de septiembre de 2017
  • 2. 19/09/17 Angel Vázquez-Patiño 2/59 Objetivos 1. Manipular caracteres y cadenas en C 2. Utilizar librerías estándar de C para la manipulación de caracteres y cadenas 3. Usar punteros para el manejo de cadenas y caracteres en C 4. Convertir tipos de datos en C
  • 3. 19/09/17 Angel Vázquez-Patiño 3/59 Contenido Cadenas en C Lectura de una cadena desde el teclado Bibliotecas estándar ctype.h string.h Conversión de tipos Ejercicios
  • 5. 19/09/17 Angel Vázquez-Patiño 5/59 Cadenas en C ● Las cadenas son realmente un arreglo unidimensional de caracteres terminados por un carácter nulo ‘0’ ● Así una cadena terminada en nulo contiene los caracteres que comprenden la cadena seguidos por un null
  • 6. 19/09/17 Angel Vázquez-Patiño 6/59 Cadenas en C Declaración e inicialización de cadena “Hola” ● Por el carácter nulo al final se reserva un elemento más en el arreglo char cad[5] = {‘H’,’o’,’l’,’a’,’0’}; ● Siguiendo la regla de inicialización de arreglos char cad[] = “Hola”;
  • 7. 19/09/17 Angel Vázquez-Patiño 7/59 Cadenas en C Representación de la cadena en memoria
  • 8. 19/09/17 Angel Vázquez-Patiño 8/59 Cadenas en C Impresión de la cadena 1 #include <stdio.h> 2 int main(){ 3 char cad[5] = {'H', 'o', 'l', 'a', '0'}; 4 printf("Saludo: %sn", cad); 5 }
  • 9. 19/09/17 Angel Vázquez-Patiño 9/59 Cadenas en C Recorrido de la cadena (1) 1 int main(){ 2 char cad[5] = {'H', 'o', 'l', 'a', '0'}; 3 int i = 0; 4 while(cad[i]) 5 putchar(cad[i++]); 6 }
  • 10. 19/09/17 Angel Vázquez-Patiño 10/59 Cadenas en C Recorrido de la cadena (2) 1 int main(){ 2 char cad[5] = {'H', 'o', 'l', 'a', '0'}; 3 for(int j = 0; j<5; j++) 4 printf("%c", cad[j]); 5 }
  • 11. 19/09/17 Angel Vázquez-Patiño 11/59 Lectura de una cadena desde el teclado
  • 12. 19/09/17 Angel Vázquez-Patiño 12/59 Leer una cadena desde el teclado 1 int main(){ 2 char nombre[50]; 3 printf("Ingrese su nombre completo (50 letras máximo): "); 4 scanf("%s", nombre); 5 printf("Nombre: %s", nombre); 6 }
  • 13. 19/09/17 Angel Vázquez-Patiño 13/59 Leer una cadena desde el teclado 1 int main(){ 2 char nombre[50]; 3 printf("Ingrese su nombre completo (50 letras máximo): "); 4 scanf("%49[0-9a-zA-z ]", nombre); 5 printf("Nombre: %s", nombre); 6 }
  • 14. 19/09/17 Angel Vázquez-Patiño 14/59 Leer una cadena desde el teclado 1 int main(){ 2 char nombre[50]; 3 printf("Ingrese su nombre completo (50 letras máximo): "); 4 scanf("%[^n]s", nombre); 5 printf("Nombre: %s", nombre); 6 }
  • 15. 19/09/17 Angel Vázquez-Patiño 15/59 Leer una cadena desde el teclado 1 #include<stdio.h> 2 int main(){ 3 char nombre[50]; 4 printf("Ingrese su nombre completo (50 letras máximo): "); 5 gets(nombre); // warning: the `gets' function is dangerous and should not be used. 6 printf("Nombre: %s", nombre);}
  • 16. 19/09/17 Angel Vázquez-Patiño 16/59 Leer una cadena desde el teclado 1 #include<stdio.h> 2 int main(){ 3 char nombre[50]; 4 printf("Ingrese su nombre completo (50 letras máximo): "); 5 fgets(nombre, 50, stdin); 6 printf("Nombre: %s", nombre);} Vea https://goo.gl/VE5N1D
  • 17. 19/09/17 Angel Vázquez-Patiño 17/59 Ejercicios Ejercicio ● Escribir una función que reciba como parámetros una cadena de caracteres y un carácter; la función devuelve el número de veces que se encuentra el carácter en la cadena
  • 18. 19/09/17 Angel Vázquez-Patiño 18/59 1 #include <stdio.h> 2 int contarCaracteres(char *str, char caracter){ 3 int i = 0, cont = 0; 4 while(str[i]) 5 if(str[i++] == caracter) cont++; 6 return cont;} 7 int main(){ 8 char cadena[99] = "UCuenca", caracter = 'c'; 9 int salida = contarCaracteres(cadena, caracter); 10 printf("Caracteres %c: %i", caracter, salida); 11 return(0);}
  • 19. 19/09/17 Angel Vázquez-Patiño 19/59 Ejercicios Ejercicio ● Implemente una función que devuelva el número de palabras de una cadena.
  • 20. 19/09/17 Angel Vázquez-Patiño 20/59 1 int numPalabras(char cad[]){ 2 int np=0, i=0; 3 while(cad[i]){ 4 if(cad[i++] == ' ') np++;} 5 return ++np;} 6 int main(){ 7 char cadena[100]; 8 scanf("%[^n]s", cadena); 9 int n = numPalabras(cadena); 10 printf("Número de palabras: %i", n);}
  • 21. 19/09/17 Angel Vázquez-Patiño 21/59 Bibliotecas estándar
  • 23. 19/09/17 Angel Vázquez-Patiño 23/59 ctype.h int isalpha(int c) ● Verifica si el caracter c es alfabético int isdigit(int c) ● Verifica si el caracter c es dígito decimal int tolower(int c) ● Convierte el carácter c a minúscula int toupper(int c) ● Convierte el carácter c a mayúscula
  • 24. 19/09/17 Angel Vázquez-Patiño 24/59 1 #include <stdio.h> 2 #include <ctype.h> 3 int main(){ 4 int i = 0; char cad[100]; 5 scanf("%[^n]s", cad); 6 while(cad[i]) 7 putchar(tolower(cad[i++])); 8 i=0; printf("n"); 9 while(cad[i]) 10 putchar(toupper(cad[i++]));}
  • 25. 19/09/17 Angel Vázquez-Patiño 25/59 ctype.h Ejercicio 1 ● Contar el número de letras del alfabeto español de un texto ingresado.
  • 26. 19/09/17 Angel Vázquez-Patiño 26/59 1 int main(){ 2 char cad[100]; 3 scanf("%[^n]s", cad); 4 int i = 0, nLetAbc = 0; 5 while(cad[i]){ 6 if(isalpha(cad[i]) || cad[i] == -79 || cad[i] == -111) nLetAbc++; 7 i++; 8 } 9 printf("Letras del alfabeto: %d.", nLetAbc);}
  • 27. 19/09/17 Angel Vázquez-Patiño 27/59 ctype.h Ejercicio 2 ● Leer una cadena y decir si es un número entero no negativo o real no negativo válido.
  • 28. 19/09/17 Angel Vázquez-Patiño 28/59 1 int main(){ 2 char cad[100]; scanf("%[^n]s", cad); 3 int i = 0, nPun = 0, nDec = 0; 4 while(cad[i]){ 5 if(isdigit(cad[i])) nDec++; 6 else if(cad[i] == '.') nPun++; 7 i++;} 8 if(nDec == i) printf("Número entero."); 9 else if(nDec == i-1 && nPun == 1) printf("Número real."); 10 else printf("Número no válido.");}
  • 29. 19/09/17 Angel Vázquez-Patiño 29/59 ctype.h Ejercicio 3 ● Implemente una función que reciba una cadena y una letra, y coloque en mayúsculas cada ocurrencia de la letra (case sensitive) en la cadena (la función debe modificar la cadena en sí).
  • 30. 19/09/17 Angel Vázquez-Patiño 30/59 1 void transMayuscula(char cad[], char letra){ 2 int i=0; 3 while(cad[i]){ 4 if(cad[i] == letra) 5 cad[i]=toupper(letra); 6 i++;}} 7 int main(){ 8 char cadena[100], let; 9 scanf("%[^n]s", cadena); 10 let = getchar(); 11 transMayuscula(cadena, let); 12 printf("Cadena: %s", cadena);}
  • 32. 19/09/17 Angel Vázquez-Patiño 32/59 string.h Vea los vídeos Aprende Programación en C || Programación ATS 1) https://youtu.be/YqoV6UMQEcE 2) https://youtu.be/iW_zzg2ppvg 3) https://youtu.be/_uk3pSfTpUE 4) https://youtu.be/k2Bm1rc4LGY 5) https://youtu.be/1uBfk0Gn0io 6) https://youtu.be/qbBG8rjpOW4
  • 33. 19/09/17 Angel Vázquez-Patiño 33/59 string.h char *strcpy(char *dest, const char *src) ● Copia la cadena apuntada por src a dest char *strcat(char *dest, const char *src) ● Concatena la cadenas apuntada por src al final de la cadena apuntada por dest size_t strlen(const char *str) ● Calcula la longitud de la cadena str sin incluir el carácter nulo de terminación
  • 34. 19/09/17 Angel Vázquez-Patiño 34/59 string.h int strcmp(const char *str1, const char *str2) ● 0 si str1 = str2; <0 si str1 < str2; >0 si str1 > str2 char *strchr(const char *str, int c) ● Busca la primera ocurrencia del carácter c (un unsigned char) en la cadena apuntada por el argumento str
  • 35. 19/09/17 Angel Vázquez-Patiño 35/59 string.h char *strstr(const char *haystack, const char *needle) ● Encuentra la primera ocurrencia de la cadena needle completa (sin incluir el carácter nulo de terminación) que aparece en la cadena haystack char *strtok(char *str, const char *delim) ● Separa la cadena str en una serie de tokens separados por delim
  • 36. 19/09/17 Angel Vázquez-Patiño 36/59 #include <stdio.h> #include <string.h> int main (){ char cad1[] = "Hola "; char cad2[] = "Mundo"; char cad3[2]; strcpy(cad3, cad1); // copia cad1 en cad3 printf("strcpy(cad3, cad1): %sn", cad3); strcat(cad1, cad2); // concatena printf("strcat(cad1, cad2): %sn", cad1); // Longitud cad1 después de concatenación printf("strlen(cad1):%d", strlen(cad1));}
  • 37. 19/09/17 Angel Vázquez-Patiño 37/59 sprintf 1 #include <stdio.h> 2 int main(){ 3 char nomCom[50]; 4 char nombre[] = "Angel"; 5 char apellido[] = "Vázquez"; 6 sprintf(nomCom, "%s %s", nombre, apellido); 7 printf("Nombre completo: %s.", nomCom);}
  • 38. 19/09/17 Angel Vázquez-Patiño 38/59 string.h Ver si una cadena está dentro de otra 1 int main(){ 2 char cad[100], subcad[100]; 3 scanf("%[^n]s", cad); 4 scanf("%[^n]s", subcad); 5 if(strstr(cad, subcad) != NULL) 6 printf("Sí contiene."); 7 else 8 printf("No contiene.");}
  • 39. 19/09/17 Angel Vázquez-Patiño 39/59 string.h Posición de la primera ocurrencia de una subcadena 1 int main(){ 2 char a[] = "Hola mundo"; 3 char *b = strstr(a, "mundo"); 4 printf("b: %pn*b: %cn", b, *b); 5 printf("na: %pn*a: %cn", a, *a); 6 printf("nPosición: %i", (int)(b- a));}
  • 40. 19/09/17 Angel Vázquez-Patiño 40/59 string.h Separar una cadena en tokens 1 int main(){ 2 char str[60] = "Este es- mi curso - de C -en la -- Universidad de Cuenca"; 3 const char s[2] = "-"; char *token; 4 token = strtok(str, s);//obtiene el primer token 5 while(token != NULL){ // va a través de 6 printf( " %sn", token ); // los otros tokens 7 token = strtok(NULL, s);} 8 return(0);}
  • 41. 19/09/17 Angel Vázquez-Patiño 41/59 string.h Ejercicio ● Solicitar el ingreso de los apellidos de dos personas. Mostrar un mensaje indicando si son iguales o distintos.
  • 42. 19/09/17 Angel Vázquez-Patiño 42/59 1 int main() 2 { 3 char ape1[100], ape2[100]; 4 scanf("%s", ape1); 5 scanf("%s", ape2); 6 if(strcmp(ape1, ape2)) 7 printf("Apellidos diferentes"); 8 else 9 printf("Apellidos iguales"); 10 }
  • 43. 19/09/17 Angel Vázquez-Patiño 43/59 Conversión de tipos
  • 44. 19/09/17 Angel Vázquez-Patiño 44/59 Conversión de tipos Cadena a entero 1 #include<stdio.h> 2 #include<stdlib.h> // para atoi 3 int main(){ 4 char cadena[] = "48"; 5 int num = atoi(cadena); 6 printf("%d", num*2);}
  • 45. 19/09/17 Angel Vázquez-Patiño 45/59 Conversión de tipos Cadena a float 1 #include<stdio.h> 2 #include<stdlib.h> // para atof 3 int main(){ 4 char cadena[] = "48.098"; 5 float num = atof(cadena); 6 printf("%f", num);}
  • 46. 19/09/17 Angel Vázquez-Patiño 46/59 Conversión de tipos Entero a cadena 1 #include<stdio.h> // sprintf 2 int main(){ 3 int entero = 368; 4 char cad[4]; 5 sprintf(cad, "%d", entero); 6 printf("%s", cad);}
  • 47. 19/09/17 Angel Vázquez-Patiño 47/59 Conversión de tipos Entero a cadena ● También puede revisar la función itoa ● itoa no es estándar ● https://goo.gl/Cv7r7c
  • 48. 19/09/17 Angel Vázquez-Patiño 48/59 Conversión de tipos Flotante a cadena ● Vea https://goo.gl/KjIdgx
  • 49. 19/09/17 Angel Vázquez-Patiño 49/59 Conversión de tipos Ejercicio ● Solicitar el ingreso, como cadenas, del nombre y edad de dos personas (validar que sea una edad correcta entre 0 y 130 años). Mostrar el nombre de la persona con mayor edad.
  • 50. 19/09/17 Angel Vázquez-Patiño 50/59 1 int main(){ 2 char nom1[50],eda1[3],nom2[50],eda2[3]; 3 scanf("%s", nom1); 4 do{ scanf("%s", eda1); 5 }while(atoi(eda1)<0 || atoi(eda1)>130); 6 scanf("%s", nom2); 7 do{ scanf("%s", eda2); 8 }while(atoi(eda2)<0 || atoi(eda2)>130); 9 if(atoi(eda1) > atoi(eda2)) 10 printf("Mayor: %s", nom1); 11 else printf("Mayor: %s", nom2);}
  • 52. 19/09/17 Angel Vázquez-Patiño 52/59 Ejercicios 1) Implemente la función _Bool equals(const char *str1, const char *str2) que devuelve true/false si las cadenas enviadas como argumento son/(no son) iguales. Es case sensitive 2) Implemente la función _Bool equalsIgnoreCase(const char *str1, const char *str2) que devuelve true/false si las cadenas enviadas como argumento son/ (no son) iguales. Es no case sensitive.
  • 53. 19/09/17 Angel Vázquez-Patiño 53/59 Ejercicios 3) Implemente la función void substring(char *dest, const char *str, size_t pos) que devuelve una subcadena dest desde la posición pos hasta el final de la cadena str 4) Implemente la función void substring(char *dest, const char *str, size_t pos1, size_t pos2) que devuelve una subcadena dest desde la posición pos1 hasta la posición pos2 de la cadena str
  • 54. 19/09/17 Angel Vázquez-Patiño 54/59 Ejercicios 5) Implemente la función size_t lastIndexOf(const char *cad, const char *subcad) que da la posición de la primera ocurrencia de la subcadena subcad comparando la ocurrencia de derecha a izquierda en cad
  • 55. 19/09/17 Angel Vázquez-Patiño 55/59 Conceptos y términos importantes
  • 56. 19/09/17 Angel Vázquez-Patiño 56/59 Conceptos y términos importantes ● Maneras de leer cadenas desde el teclado ● Una cadena es un arreglo de caracteres ● Punteros ● Uso de punteros en las funciones ● Transformar caracteres o cadenas a números
  • 57. 19/09/17 Angel Vázquez-Patiño 57/59 Referencias ● Gustedt, J., 2017. Modern C. France. http://icube-icps.unistra.fr/index.php/File:Moder nC.pdf ● C - Strings, https://www.tutorialspoint.com/cprogramming/c_ strings.htm ● How do you allow spaces to be entered using scanf, https://goo.gl/UOk4e ● C Standard Library Reference Tutorial, https://www.tutorialspoint.com/c_standard_librar y/
  • 58. 19/09/17 Angel Vázquez-Patiño 58/59 Referencias ● Trim a string in C, https://goo.gl/SvJKk Revisar ● Sección 6.1. Arrays del libro de Gustedt (2017) ● Vázquez-Patiño, A., 2017. Ejercicios Básicos de Programación, 1st ed. Departamento de Ciencias de la Computación, Universidad de Cuenca, Cuenca, Ecuador. https://goo.gl/X0UTxi