Aula 2.14 - Strings em C
Hoje aprenderemos sobre strings que são basicamente um conjunto de caracteres armazenados em um vetor. Portanto é recomendado que tenha lido a aula 2.10 para que compreenda bem a aula de hoje.
A declaração segue o mesmo padrão de um vetor de caracteres: char nome[tamanho];
Portanto se queremos armazenar a palavra "Limon" dentro da string "nome", podemos fazer das seguintes formas a declaração:
char nome[] = "Limon Tec";
char nome[] = {'L','i','m','o','n',' ','T','e','c','\0'};
char nome[9];
nome[0]='L';
nome[1]='i';
nome[2]='m';
nome[3]='o';
nome[4]='n';
nome[5]=' ';
nome[6]='T';
nome[7]='e';
nome[8]='c';
nome[9]='\0';
Note que a ultima posição de um vetor de caracteres vai sempre receber o caracter '\0' que significa que ali acaba a string, no primeiro exemplo não é necessário colocar '\0' pois ele é inserido automaticamente pelo compilador já que está usando aspas duplas, portanto ao declarar o tamanho de uma string deve informar o tamanho de caracteres que você precisa mais um para o caractere \0.
Vale notar que 'A' é diferente de "A", o caractere declarado com aspas simples é UM caractere (ocupa 1 byte) e o com aspas duplas é uma STRING (no caso ocupa 2 bytes, já que inclui o caractere '\0' depois do 'A') - por isso uma string é também conhecida como vetor de caractere já que juntando estes caracteres do vetor pode-se formar uma string)
Suponha que você deseja imprimir a string nome que fizemos acima, é muito simples fazer isso utilizando a função printf. Exemplo: printf("%s",nome);
Mas como ler uma string, ou seja, pedir para o usuário digite uma string. Bom, você pode usar o scanf para a leitura de string, mas note que a variável que recebe a string não é precedida pelo &.
Forma certa: scanf("%s",nome);
Infelizmente temos um problema com o scanf pois ele vai ler somente uma palavra, ou seja, vai ler todos caracteres até encontrar um espaço, tab ou enter e inserir o caractere delimitador '\0'.
Portanto, caso deseja ler uma frase... melhor recorrer a outras funções, você pode usar a função gets ou fgets por exemplo.
Exemplos:
gets(nome);
fgets(nome,9,stdin); //(string,tamanho da string,stdin)
Importante ressaltar que a função fgets lê até encontrar um enter, e ele é inserido na string, no caso a string recebeu os caracteres: Limon Tec\n\0
A passagem de string para funções é exatamente igual a passagem de vetores para funções, releia a aula 2.8 caso necessite.
Confira abaixo um exemplo de leitura e escrita de string e sua utilização em funções:
Bom, por hoje é isto. Na próxima aula apresentaremos as principais funções, já prontas para uso, com strings, elas nos ajuda a poupar tempo.
COMENTÁRIOS