Cadenas

393 views

Published on

Uso de las cadenas o arreglos de caracteres en el Lenguaje C

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
393
On SlideShare
0
From Embeds
0
Number of Embeds
123
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cadenas

  1. 1.  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
  2. 2.  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);
  3. 3.  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.
  4. 4.  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.
  5. 5.  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”.
  6. 6.  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
  7. 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. 8.  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
  9. 9.  Para leer una cadena de texto, usaríamos la orden “gets”, así: gets(texto);
  10. 10.  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);
  11. 11.  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.
  12. 12.  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”.
  13. 13.  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
  14. 14.  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);
  15. 15.  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
  16. 16.  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:
  17. 17.  Para comparar dos cadenas alfabéticamente (para ver si son iguales o para poder ordenarlas, por ejemplo), usamos strcmp(cad1, cad2);
  18. 18.  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.
  19. 19.  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
  20. 20.  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.
  21. 21.  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.
  22. 22. strcpy(cadena, "20 30"); sscanf(cadena, "%d %d", &primerNum, &segundoNum);
  23. 23.  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.
  24. 24. if (sscanf(cadena, "%d %d", &primerNum, &segundoNum)<2) printf("Debia teclear dos numeros");

×