Title: Strings (I)
1Strings (I)
- Clase 18
- Introducción a la Programación
- Marcos Sepúlveda(marcos_at_ing.puc.cl)
2Resumen de los últimos capítulos
- Aprendimos a utilizar arreglos (unidimensionales
a multdimensionales) para almacenar datos
relacionados - Aprendimos qué son los punteros, cómo permiten
ampliar lo que podemos hacer con las funciones, y
cuál es su relación con los arreglos
3Recordatorio tipo de datos char
- En una variable de tipo char, lo que se almacena
no es el carácter en sí, sino el código ASCII
correspondiente. - Por lo tanto, puede verse al tipo char como un
subtipo del tipo int (short int), que puede
almacenar enteros entre 0 y 255. - Ejemplo Manipulación de un carácter como char y
como int - main()
- char c
- printf("Ingrese un caracter ")
- scanf("c", c)
- printf("Usted ingreso el caracter 'c' cuyo
codigo ASCII es d\n", c, c)
4Ejercicio hacer un programa que imprima la tabla
ASCII
Tabla ASCII Sume el valor de la fila con el de la
columna para obtener el codigo 0 1
2 3 4 5 6 7 8 9 10 11 12 13 14
15 0 ? ? ? ? ? ?
? ? ? 16 ? ? ?
? ? ? ? ? ? ? ? ?
? 32 ! " ' ( )
, - . / 48 0 1 2 3
4 5 6 7 8 9 lt gt ?
64 _at_ A B C D E F G H I J
K L M N O 80 P Q R S T
U V W X Y Z \ _ 96
a b c d e f g h i j k
l m n o 112 p q r s t u v
w x y z 128 Ç
ü é â ä à å ç ê ë è ï î ì
Ä Å 144 É æ Æ ô ö ò û ù
ÿ Ö Ü P ƒ 160 á í ó
ú ñ Ñ ª º ½ ¼
176
192 - -
- - - - -
208 - - -
_ 224 a ß G p S
s µ t F T O d 8 f e n 240
( ) v
n ²
5Programa que imprime la tabla ASCII
- main()
- int i, j
- int c
- printf("\nTabla ASCII\n")
- printf("Sume el valor de la fila con el de la
columna para obtener el codigo\n\n") - printf(" 0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15\n\n") - for (i0 ilt16 i)
- printf("5d ", i16)
- for(j0 jlt16 j)
- c 16ij
- if (c0 c7 c8 c9 c10
c13 c26) c' ' - printf("3c ", c)
-
- printf("\n")
-
Ejercicio hacer una función que transforma una
letra de minúsculas a mayúsculas.
6Qué es un string?
- Un arreglo de caracteres
- Para qué sirve?
- Para hacer programas que manipulen texto
7Esencia del manejo de strings en C
- Normalmente los strings se almacenan en arreglos
que son de un tamaño mayor al que en realidad se
requiere. - Ejemplo
- char nombre50
- Es necesario contar con algún medio para saber
hasta dónde está utilizado el vector. - Se usa un caracter especial que sirve como
delimitador, y que se coloca al final del string - Este caracter se conoce como NULO, o en Inglés,
NULL, y está asociado al código ASCII 0 (cero). - El caracter nulo se representa como '\0', o
simplemente con su representación entera 0.
8Inicialización de un string
0
2
3
4
1
H o l a \0
- 4 formas alternativas
- char s5 'H', 'o', 'l', 'a', '\0'
- char s5 'H', 'o', 'l', 'a', 0
- char s5 "Hola"
- char s "Hola" (definición implícita del
tamaño)
9Ejemplos de uso
- 1. Declaración de un string a partir de una
constante - define N 50
- char strN
- 2. Declaración e inicialización de un string
- char str50 "Este es el valor inicial"
- 3. Definición implícita de tamaño
- char str "El tamano se auto-determina"
- 4. Lectura mediante scanf de un string
- scanf("s", str)
- 5. Lectura de string (equivalente a la
anterior) - scanf("s", str) / En caso de vectores,
strstr / - 6. Impresión mediante printf de un string
- printf("s\n", str)
10Ejemplos de uso (2)
- 7. Inicialización de un string con caracteres
especiales - char str "\tMensaje\n" / Tamano 11
(por que?) / - printf("s", str) / Nueva linea incluida
en el string / - 8. Acceso a posiciones individuales de un
string - char str "Texto"
- printf("c\n", str0) / Despliega el
caracter T / - 9. Inicialización mediante ciclo AAAAA
- char str50
- int i
- for (i0 ilt5 i) stri 'A'
- str5 0 / Pone el nulo al final /
- 10. Inicializacion mediante ciclo con letras
mayusculas ABCDE - char str50
- int i
- for (i0 ilt5 i)
- stri 65 i / 65 'A' /
11Ejercicio hacer una función que quite los
espacios de un string
Ejemplo Hola que tal ? Holaquetal
- void SinEspacios(char a,
- char b)
- int posa0
- int posb0
- while (aposa!'\0')
- if (aposa!' ')
- bposbaposa
- posb
-
- posa
-
- bposb'\0'
- main()
- char a"Hola que tal"
- char b50
- SinEspacios(a, b)
- printf("s\n", b)