fuente: transparencias de Gonzalo Pastor y producción propia Strings En C++, una cadena o string se define como un vector de caracteres de longitud determinada que finaliza con un carácter nulo. El carácter nulo se especifica como ‘\0’ y se corresponde con el ASCII 0 o la constante NULL. Por esta razón, para declarar vectores de caracteres es necesario que el tamaño tenga un carácter más que la cadena más larga que pueda almacenar. Por ejemplo, si se desea declarar un vector que contenga una cadena de 10 caracteres, se deberá escribir: char Cadena[11]; Inicializar el vector en la declaración: char Cadena[5]= {“Hola”}; //Al final se almacena el carácter NULL o \0. Si inicializamos el vector podemos omitir el tamaño del mismo: char Cadena[ ]= " Hola Mundo" ; Funciones con cadenas (biblioteca string.h) Aceptar una cadena por teclado: Estas funciones aceptan la introducción de caracteres que los almacena dentro del vector. Al final almacenan el carácter NULL y no controlan el tamaño del vector. scanf(“%s”, Cadena); Se acaba cuando se pulsa ENTER o ESPACIO. No permite la introducción de varias palabas. Qué pasa si el código dice Scanf(“%s”,nombre) Y se ingresa Juan Carlos gets(Cadena); Se acaba cuando se pulsa ENTER. Permite la introducción de varias palabras - Mostrar por pantalla una cadena: printf(“%s”, Cadena); Muestra hasta que encuentra el carácter NULL. printf(“%s %i\n”,nombre,edad); Juan 20 Carlos Alberto 16 Ana Claudia 15 printf(“%20s %i\n”,nombre,edad); Juan 20 Carlos Alberto 16 Ana Claudia 15 printf(“%-20s %i\n”,nombre,edad); Juan 20 Carlos Alberto 16 Ana Claudia 15 FlushAll Esta función, de la biblioteca stdio.h, vacía todos los buffers de entrada. La ejecutamos antes de la función gets para vaciar el buffer de teclado. A veces ese buffer contiene algún carácter, o el carácter ENTER pulsado desde la última entrada de datos por teclado, y el sistema operativo lo toma como entrada de a función gets, que queda ejecutada sin intervención del usuario. Asignación Con string no se puede asignar un dato con el signo de igual (=) strcpy(c1, c2); Copia la cadena c2 en la cadena c1. Ej: a=“Hola”; //No se puede strcpy(a, “Hola”); //Si se puede Comparación Con string no se puede comparar usando el doble igual(==) int strcmp(c1,c2); Compara las dos cadenas. Devuelve 0 si son iguales, <0 si c1 es menor a c2 o >0 si c1 es mayor a c2. Ej: if (s==“Hola”) //No se puede if (strcmp(s,”Hola”)==0) //Si se puede if (!strcmp(s,”Hola”)) //Igual al anterior Otras funciones int strlen(c); //Devuelve la cantidad de caracteres que contiene la cadena strcat(c1, c2); //Concatena c2 al final de la cadena c1. Ejemplo ¿Cómo declararía un vector de 10 posiciones que contenga nombres de personas? char nombres[10][20]; typedef Permite crear nuevos tipos de datos a partir de otros existentes sintaxis: typedef tipo_existente tipo_nuevo; Ejemplo: typedef char string [20]; string nombre[10]; Ejercicios 1.Escriba un programa que lea dos strings e imprima “son iguales” si son iguales, y “son distintos” si son distintos 2.Escriba un programa que lea dos strings y devuelva el largo de concatenarlos. 3.Escriba un programa en el que se inicialicen tres strings con ciertos valores (sin usar la entrada estandar, o sea usando asignación) y se los imprima en orden alfabético. 4.Escriba un programa que lea una frase que contiene espacios y luego la imprima en pantalla 5.Cree un tipo de datos para los nombres de países y uno para las iniciales de una persona Errores comunes 1.Abnormal program termination , solución: se accedió a memoria no reservada 2.Unable to create output file , solución: configurar C:\TC en Options -> Directories
participants (1)
-
Federico Kouyoumdjian