Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras
Introducción a la Ingenierı́a
francisco.olivars.14@sansano.usm.cl
camilo.perez@alumnos.inf.utfsm.cl
ignacio.tampe@sansano.usm.cl
Arreglos
int arreglo[5];
Basura?
I Basura.
#include <stdio.h>
int main(){
int basura[100], i;
for (i = 0; i < 100; i++){
printf("%d", basura[i]);
}
printf("\n");
return 0;
}
I Las reglas de indexación son las mismas que las que conocen (es
decir, partimos contando desde cero).
I Por lo tanto, ejemplo contendrá el tercer valor de arreglo5, que
serı́a 0.25.
Strings
I Python posee un tipo de datos especial para los strings.
I Pero eso en C no existe...
I Los strings son arreglos de caracteres.
I Para indicar el fin del string, se debe usar el caracter especial “\0”.
I Es una forma de decirle a NULL.
Largo
I Ejemplo en Python:
I Ejemplo equivalente en C:
#include <stdio.h>
#include <string.h>
int main(){
char string[] = "13 caracteres";
int largo = strlen(string);
printf("\"%s\" tiene %d caracteres.", string, largo);
return 0;
}
Copia
Concatenación
Concatenación controlada
I Qué pasó aquı́?
I Es una situación llamada “stack buffer overflow” (desbordamiento de
buffer de pila).
I Potencial fuente de bugs y problemas de seguridad!
I Para evitar esto, acostúmbrense a usar strncat en vez de strcat.
Comparación
I Con lo que hemos visto hasta ahora, serı́a ridı́culo pensar que C
permitirı́a usar operadores de comparación para ver si dos strings son
iguales o si alguno va antes que el otro.
I Efectivamente, es ridı́culo.
I Para comparar un string con otro usaremos strcmp.
I Ejemplo en Python:
print "Escriba \"salir\" para terminar el programa."
while raw_input() != "salir":
continue
I Ejemplo equivalente en C:
#include <stdio.h>
#include <string.h>
int main(){
char cierre[10];
printf("Escriba \"salir\" para terminar el programa.\n");
while(strcmp(cierre, "salir") != 0){
scanf("%s", cierre);
}
return 0;
}
IWG-101 (FO/CP/IT) Arreglos y estructuras 26-28-30/09/2016 24 / 32
Estructuras
Estructuras
struct estudiante{
char nombre[20];
int edad;
char rol[12];
};
alumno2.edad = 40;
La instrucción typedef
I Es posible evitar escribir struct cada vez que quieran definir una
variable estructurada.
I Para esto definiremos un tipo personalizado mediante la palabra clave
typedef.
I La sintaxis es la siguiente:
Introducción a la Ingenierı́a
francisco.olivars.14@sansano.usm.cl
camilo.perez@alumnos.inf.utfsm.cl
ignacio.tampe@sansano.usm.cl