2. Una cadena de texto en C se almacena
como un arreglo de caracteres finalizadas
con un carácter nulo (0) de modo que
tendremos que reservar un espacio más de
lo que necesitamos, este carácter especial
se utiliza en todas las operaciones
referentes a cadenas
3. Por ejemplo, si queremos pedir un nombre y
saludar al usuario sería:
char texto[40];
printf("Introduce tu nombre: ");
scanf("%s", &texto);
printf("Hola, %sn", texto);
4. Podemos leer (o modificar) una de las
letras de una cadena de igual forma
que leemos o modificamos los
elementos de cualquier arreglo, el
primer elemento será texto[0], el
segundo será texto[1] y así
sucesivamente.
5. En una cadena que definamos como “char
texto[40]” lo habitual es que realmente no
ocupemos las 39 letras que podríamos
llegar a usar. Si guardamos 9 letras (y el
carácter nulo que marca el final),
tendremos 30 posiciones que no hemos
usado.
6. Pero estas 30 posiciones
generalmente contendrán “basura”,
lo que hubiera previamente en esas
posiciones de memoria, porque el
compilador las reserva para nosotros
pero no las “limpia”.
7. Para saber cual es la longitud real de
nuestra cadena tenemos dos
opciones:
Podemos usar un contador que se vaya
incrementando hasta encontrar el
carácter nulo (0) o usar la función strlen
de la librería string.h
8. Para saber cual es la longitud real de
nuestra cadena tenemos dos
opciones:
Podemos usar un contador que se
vaya incrementando hasta encontrar
el carácter nulo (0) o usar la función
strlen de la librería string.h
9. Existen otras órdenes que están
diseñadas específicamente diseñadas
para manejar cadenas de texto, y
que nos podrán evitar algunas
limitaciones que tendríamos con scanf
10. Para leer una cadena de texto,
usaríamos la orden “gets”, así:
gets(texto);
11. De igual modo, para escribir un texto en
pantalla podemos usar “puts”, que
muestra la cadena de texto y avanza a
la línea siguiente:
puts(texto);
12. Cuando queremos dar a una variable el valor
de otra, normalmente usamos construcciones
como a = 2, o como a = b.
Pero en el caso de las cadenas de texto, esta
NO es la forma correcta, no podemos hacer
algo como saludo="hola" ni algo como
texto1=texto2.
13. La forma correcta de guardar en una
cadena de texto un cierto valor es:
strcpy (destino, origen);
Es decir, debemos usar una función llamada
“strcpy” (string copy, copiar cadena), que se
encuentra también en “string.h”.
14. Es nuestra responsabilidad que en la cadena
de destino haya suficiente espacio reservado
para copiar lo que queremos.
Si no es así, estaremos sobreescribiendo
direcciones de memoria en las que no
sabemos qué hay
15. Para evitar este problema, tenemos una
forma de indicar que queremos copiar sólo
los primeros n bytes de origen, usando la
función “strncpy”, así:
strncpy (destino, origen, n);
16. Podemos añadir una cadena al final de otra
(concatenarla), con
strcat (cadenaDestino, cadenaParaAgregar);
Es decir el contenido de cadenaParaAgregar
se añadirá a continuación de cadenaDestino
y este será su nuevo valor
17. Un programa que te pida una frase y la muestre en
pantalla sin espacios. Por ejemplo, si la frase es “Hola,
como estás”, debería aparecer en pantalla
“Hola,comoestás”.
Un programa que nos pida que tecleemos una frase y
guarde en otra variable sólo las 4 primeras letras.
Un programa que nos pida nuestro nombre, nuestro
apellido y cree una nueva cadena de texto que
contenga los dos, separados por un espacio:
18. Para comparar dos cadenas
alfabéticamente (para ver si son iguales o
para poder ordenarlas, por ejemplo), usamos
strcmp(cad1, cad2);
19. Esta función devuelve un número
entero, que será:
0 si ambas cadenas son iguales.
Un número negativo, si cadena1 <
cadena2.
Un número positivo, si cad1 > cad2.
20. La función sprintf crea una cadena de
texto a partir de una especificación de
formato y unos ciertos parámetros.
A diferencia de printf (que manda su
salida a la pantalla) es que sprintf la
deja guardada en una cadena
21. Nos puede resultar cómoda cuando
queramos formatear texto que no
vaya a aparecer directamente en
pantalla de texto, sino que lo vayamos
a enviar a un fichero, o que queramos
mostrar en pantalla gráfica.
22. Por otra parte sscanf es similar a
scanf, con la diferencia de que los
valores para las variables no se
leen desde el teclado, sino desde
una cadena de texto.
24. sscanf devuelve el numero de
valores que realmente se han
detectado, de modo que
podemos comprobar si ha
tomado todos los que
esperábamos o alguno menos.
25. if (sscanf(cadena, "%d %d",
&primerNum, &segundoNum)<2)
printf("Debia teclear dos
numeros");