Está en la página 1de 25

Introduccin a la Programacin

Semana 12:

Cadenas con PUNTEROS

Noviembre de 2015

1
Objetivos:
Poder comprender el concepto y uso de
cadenas en un programa.
Conocer las herramientas necesarias para la
manipulacin de cadenas.
Desarrollar algoritmos para el procesamiento
de cadenas de texto.
Introduccin al uso de la librera string.h

Definicion de Cadenas
Una cadena en C , es una array (Vector-Arreglo)
de Caracteres. Una cadena es finalizada por el
carcter NULL (NULO) \0 . Por ejemplo

En el ejemplo anterior, c string tutorial es una


cadena, el compilador agrega el carcter null al
final de la cadena
Declaracin de Cadenas
Inicializacin de Cadenas:
En C las cadenas pueden ser inicializadas de
diferentes maneras.

La lectura :
Lectura de cadena desde el terminal
#include <stdio.h>
int main(){
char name[20];
printf("Enter name: ");
scanf("%s",name);
printf("Your name is %s.",name);
return 0;
}
Observacion

En el ejemplo anterior se ignora Ritchie porque la


funcin scanf toma solo la cadena hasta el
espacio en blanco
Lectura de una lnea de texto
#include <stdio.h> Version1
int main(){
char name[30],ch;
int i=0;
printf("Enter name: ");
while(ch!='\n') // terminates if user hit enter
{
ch=getchar();
name[i]=ch;
i++;
}
name[i]='\0'; // inserting null character at end
printf("Name: %s",name);
return 0;}
Lectura de una lnea de texto
Version2
int main(){
char name[30];
printf("Enter name: ");
gets(name); //Function to read string from user.
printf("Name: ");
puts(name); //Function to display string.
return 0;
}
#include <stdio.h>
void main(void)
#define max 10 // Se pone as porque es mas facil, si
queremos
#define long 60 // posteriormente modificar las dimensiones de la
matriz
void main(void)
{ char lista [max][long];
int i=0,n;
puts (Pulsa ^Z para finalizar...);
do
{ printf (\nNombre y apellidos...);
fin=gets(Lista[i]);
i++;
}while (fin!= NULL && i<max);

printf (\n\n);

for (n=0;n<i;n++)
printf (\n Nombre y Apellidos..: %s,Lista[n]);
Ejemplo : Punteros y Cadenas
Comprobar que si p es un puntero de char
entonces al sumar 1 a p se obtiene una direccin
cuyo valor aumenta en 1 ( = sizeof(char))
respecto a la direccin de p.
En general, comprobar que al sumar i a p (al
calcular p+i) se incrementa el valor de p en
i*sizeof(char).
#include<stdio.h>
int main()
{
char letra;
char * p = &letra, *q;
int i;
unsigned long base;
printf("La direccin de letra es %u\n", (unsigned int)p);
q = p + 1;
printf("La direccin dada por q = p + 1 es %u\n", (unsigned int)q);
q = p + 2;
printf("La direccin dada por q = p + 2 es %u\n", (unsigned int)q);
q = p + 3;
printf("La direccin dada por q = p + 3 es %u\n", (unsigned int)q);
q = p + 4;
printf("La direccin dada por q = p + 4 es %u\n", (unsigned int)q);
printf("Escriba el valor de i: ");
scanf("%d", &i);
q = p + i;
printf("q = p + %d vale %u\n", i, (unsigned int)q);
base = (unsigned long)p;
printf("El valor calculado es: %u\n",base + i*sizeof(char));
return 0;
}
Funciones de cadenas (string.h).

El archivo de encabezado string.h contiene las


descripciones de toda una gama de funciones
adecuadas para la manipulacin de cadenas.
Vase a continuacin una breve descripcin de
estas funciones
Funciones de cadenas (string.h).
Funciones de cadenas (string.h).
Funciones de cadenas (string.h).
Funciones de cadenas (string.h).
Ejemplos : string.h
#include <string.h>
#include <stdio.h>
int main(void)
{
char string[10];
char *str1 = "abcdefghi";
stpcpy(string, str1);
printf("%s\n", string);
return 0;
}
Ejemplos : string.h
#include <string.h>
#include <stdio.h>
int main(void)
{
char destination[25];
char *blank = " ", *c = "C++", *Borland = "Borland";
strcpy(destination, Borland);
strcat(destination, blank);
strcat(destination, c);
printf("%s\n", destination);
return 0;
}
Ejemplos : string.h
#include <string.h>
#include <stdio.h>
int main(void)
{
char string[15];
char *ptr, c = 'r';
strcpy(string, "This is a string");
ptr = strchr(string, c);
if (ptr)
printf("The character %c is at position: %d\n", c, ptr-string);
else
printf("The character was not found\n");
return 0;
}
Ejemplos : string.h
#include <string.h>
#include <stdio.h>
int main(void)
{
char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
int ptr;
ptr = strcmp(buf2, buf1);
if (ptr > 0)
printf("buffer 2 is greater than buffer 1\n");
else
printf("buffer 2 is less than buffer 1\n");
ptr = strcmp(buf2, buf3);
if (ptr > 0)
printf("buffer 2 is greater than buffer 3\n");
else
printf("buffer 2 is less than buffer 3\n");
return 0;
}
Ejemplos : string.h
/* strncmpi example */
#include <string.h>
#include <stdio.h>
int main(void)
{
char *buf1 = "BBB", *buf2 = "bbb";
int ptr;
ptr = strcmpi(buf2, buf1);
if (ptr > 0)
printf("buffer 2 is greater than buffer 1\n");
if (ptr < 0)
printf("buffer 2 is less than buffer 1\n");
if (ptr == 0)
printf("buffer 2 equals buffer 1\n");
return 0;
}
Ejemplos : string.h
#include <string.h>
#include <stdio.h>
int main(void)
{
char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
int ptr;
ptr = strcmp(buf2, buf1);
if (ptr > 0)
printf("buffer 2 es mas grande que buffer 1\n");
else
printf("buffer 2 es mas pequeo que buffer 1\n");
ptr = strcmp(buf2, buf3);
if (ptr > 0)
printf("buffer 2 es mas grande que buffer 3\n");
else
printf("buffer 2 es mas pequeo que buffer 3\n");
return 0;
}
Ejemplos : string.h
#include <stdio.h>
#include <string.h>

int main(void)
{
char string[10];
char *str1 = "abcdefghi";

strcpy(string, str1);
printf("%s\n", string);
return 0;
}
Ejemplos : string.h
#include <stdio.h>
#include <string.h>

int main(void)
{
char *string = "Borland International";

printf("%d\n", strlen(string));
return 0;
}
Ejemplos : string.h

También podría gustarte