Strings vs. Vectores de Caracteres
From Wiki**3
Uma string é um vector de caracteres terminado por '\0'. Um vector de caracteres genérico não assume nada sobre o seu conteúdo: em particular, não define caracteres especiais.
A confusão dos dois conceitos é fonte de problemas. Veja-se o seguinte exemplo.
Ficheiro vecs.c
#include <stdio.h>
#include <string.h>
main() {
char a[] = { 'a', 'b', 'c', '\0' };
char b[] = "abc";
printf("%s %d %d\n", a, strlen(a), sizeof(a));
printf("%s %d %d\n", b, strlen(b), sizeof(b));
return 0;
}
Se, no código acima, a parte a vermelho for incluÃda (terminador), então a e b serão idênticos. Caso contrário, nada garante que a seguir a 'c' (em a) exista um '\0'. Os resultados podem ser surpreendentes... (ver exemplo abaixo).
Compilação e execução prompt% gcc -ansi -pedantic -Wall vecs.c -o vecs prompt% ./vecs abc@Ôïÿ¿ïÿ¿ØO@ @Ôïÿ¿¨ïÿ¿Â@ 33 3 abc 3 4