Los strings en C "no existen" como tipo, pero se toma una convención: Los strings son arreglos unidimensionales de caracteres que terminan en el caracter ASCII 0 ('\0').
Si se cumple con esta definición. se cuenta con una coleccion de funciones para trabajar con strings (strlen(), para calcular el largo, strcpy(), para copiar el contenido de un string a otro, etc. )
Caso especial: String literal
Los strings literales usan la comilla doble. El compilador transforma los string literales en arreglos unidimensionales con un 0 al final.
Definir una variable asi:
char *s = { 'h', 'o', 'l', 'a', '\0' };
es similar a haberlo hecho asi:
char *s = "hola";
Errores comunes:
- No dejar espacio suficiente para el caracter de fin.
char str[4];
strcpy( str, "hola" ); // <-- "hola" -> 5 caracteres, str -> espacio solo para 4
- Creer que un string ya tiene memoria por solo haber definido un puntero a char.
char *str; // <-- no hay solicitud de memoria strcpy( str, "problemas" );
pero, la definicion y la inicializacion inmediata sí solicita memoria
char *str = "no hay problemas"; // solicitud de memoria implicita
No hay comentarios:
Publicar un comentario