teste
Aula 17: Manipula¸c˜ ao de Strings
Cadeias de caracteres
• Uma cadeia de caracteres, mais conhecida como string,
´e uma sequˆencia de letras e s´ımbolos, onde os s´ımbolos podem ser espa¸cos em branco, d´ıgitos e v´arios outros como pontos de exclama¸c˜ao e interroga¸c˜ao, s´ımbolos matem´aticos, etc.
• Em C, uma cadeia de caracteres ´e representada por um vetor de vari´aveis do tipo char e ´e terminada com o marcador ’\0’.
Declarando uma cadeia de caracteres char texto [TAMANHO + 1];
• Devemos utilizar uma posi¸c˜ao al´em do tamanho desejado para que possa ser colocado o marcador ’\0’ no final da string quando essa tiver o tamanho m´aximo.
Lendo uma string do teclado
• Podemos ler uma string caracter a caracter, como far´ıamos com qualquer outro vetor, mas ´e mais simples ler a string inteira, utilizando o comando
• Note que n˜ao utilizamos o e comercial (&) para strings.
Isso ocorre pois o nome de um vetor j´a ´e um endere¸co de mem´oria (o endere¸co de mem´oria do come¸co do vetor). scanf ("%s", texto);
Veja o c´odigo: scanf.c
Lendo uma string do teclado
• Infelizmente, a leitura a partir do teclado utilizando o scanf lˆe somente at´e o primeiro espa¸co, ou seja, lˆe somente uma palavra, o que torna o seu uso desta forma um pouco restrito.
• Para contornar isso, podemos utilizar a fun¸c˜ao gets, que faz a leitura at´e encontrar o caracter de fim de linha
(enter ). gets(texto); Veja o c´odigo: gets.c
Lendo uma string do teclado
• Outra op¸c˜ao ´e explorar as outras possibilidades fornecidas pela fun¸c˜ao scanf. Por exemplo, a op¸c˜ao abaixo scanf("%[^\n]); lˆe uma cadeia de caracteres at´e encontrar um enter.
Veja o c´odigo: scanf[].c
Veja mais op¸c˜oes consultando: man scanf
Lendo uma string do teclado
• Aqui, deparamos com outro problema: tanto o comando scanf quanto o gets podem ler mais caracteres que os existentes na string, provocando