Strings

Strings

by Felipe Lamberti Amado -
Number of replies: 2
Olá
Gostaria de saber por que quando eu faço algo do tipo:

char sigla[7];
//insiro valores

printf("%s", sigla);

ele imprime uma string com 9 caracteres o.O
inclusive eu posso fazer:

sigla[7] = ' ';
sigla[8] = ' ';

que não ocorre segfault.
In reply to Felipe Lamberti Amado

Re: Strings

by Felipe Lamberti Amado -
In reply to Felipe Lamberti Amado

Re: Strings

by Vinicius Coletto -
Oi Felipe,

Em qualquer vetor, seja ele de inteiro, reais ou caracteres, você consegue acessar espaços de memórias que estão fora do seu tamanho, desde que ela exista. Isso acontece porque quando fazemos v[x] equivale a fazermos &v + x, ou seja, pegamos o ponteiro para o vetor v e andamos mais x endereços à frente.

Com relação a string, você está tendo esse problema porque não esta setando o caracter de fim de string, esse marcador é representado por '\0'. Funciona assim, se você tem um vetor 's' de 'n' caracteres você deve fazer s[n] = '\0' para que o sistema saiba que a sua string acaba na posição n-1.

[]'s
Vinicius