OBS.: O símbolo ``\verb|\0|'' indica o final de uma string.
OBS.: O símbolo ""x0"indica o final de uma string.
\section{Algumas funções de manipulação de string}
9.1 Algumas funções de manipula,cão de string
A linguagem C oferece uma biblioteca padrão - string.h - para manipulaç~ao de strings. Apresentamos a
A linguagem C oferece uma biblioteca padrão - string.h - para manipulação de strings. Apresentamos a
seguir algumas das funções contidas nesta biblioteca.
9.1.1 strcpy()
\subsection{strcpy()}
Copia toda a segunda string para a primeira e retorna a string copiada.
\begin{lstlisting}
char *strcpy( char *destino, char *origem );
\end{lstlisting}
9.1.2 strlen()
\subsection{strlen()}
Retorna o tamanho de uma string.
\begin{lstlisting}
unsigned long strlen( char *string );
\end{lstlisting}
9.1.3 strcat()
\subsection{strcat()}
Concatena uma cópia da segunda string ao final da primeira e retorna a string concatenada.
\begin{lstlisting}
char *strcat( char *str1, char *str2 );
\end{lstlisting}
9.1.4 strcmp()
\subsection{strcmp()}
Compara duas strings, caractere por caractere, e retorna um valor.
Uma observação importante é que os caracteres minúsculos s~ao alfabeticamente maiores que os caracteres mai'usculos no contexto da linguagem C. Isso acontece devido ao uso da tabela ASCII.
Uma observação importante é que os caracteres minúsculos são alfabeticamente maiores que
os caracteres maiúsculos no contexto da linguagem C.
Isso acontece devido ao uso da tabela ASCII.
\begin{lstlisting}
int strcmp( char *str1, char *str2 );
\end{lstlisting}
35
36 CAP
Valor de Retorno Significado
'
\begin{tabular}{|c|l|}
\hline\verb|<0|& str1 é alfabeticamente menor do que str2 \\
\hline\verb|=0|& str1 é igual a str2 \\
\hline\verb|>0|& str1 é alfabeticamente maior do que str2 \\
\hline
\end{tabular}
ITULO 9. STRINGS
Valor de Retorno Significado
! 0 str1 é alfabeticamente menor do que str2
= 0 str1 é igual a str2
? 0 str1 é alfabeticamente maior do que str2
9.2 Exercícios
\section{Exercícios}
1. Escreva um programa em C que receba várias palavras (strings) e as imprima na tela em ordem
alfabética. Invente uma maneira criativa para o usuário indicar ao programa que não h'a mais
alfabética. Invente uma maneira criativa para o usuário indicar ao programa que não há mais
palavras a serem lidas.
2. Escreva um programa em C que l^e uma string do teclado e imprime a string invertida.
3. Um palíndromo é uma palavra tal que quando revertida 'e igual a ela mesma. Escreva um programa
que recebe uma palavra e responde se ela é palíndromo ou não.
4. Para toda palavra é possível obter um subconjunto de letras consecutivas da mesma. Este conjunto
2. Escreva um programa em C que lê uma string do teclado e imprime a string invertida.
pode receber denominações específicas de acordo com algumas propriedades que este respeita. Veja
a seguir:
3. Um palíndromo é uma palavra tal que quando revertida é igual a ela mesma.
Escreva um programa que recebe uma palavra e responde se ela é palíndromo ou não.
Se P é a palavra completa e S 'e um subconjunto de caracteres consecutivos de P e o operador +
representa a concatenação de duas strings, ent~ao:
4. Para toda palavra é possível obter um subconjunto de letras consecutivas da mesma.
Este conjunto pode receber denominações específicas de acordo com algumas propriedades
que este respeita. Veja a seguir:
ffl prefixo
Se $P$ é a palavra completa e $S$ é um subconjunto de caracteres consecutivos de $P$ e o
operador $+$ representa a concatenação de duas strings, então:
S será prefixo de P se P = S + S
\begin{description}
\item[prefixo]$S$ será prefixo de $P$ se $P = S + S'$, onde $S'$ é um outro conjunto de caracteres.
\item[sufixo]$S$ será sufixo de $P$ se $P = S'+S$, onde $S'$ é um outro conjunto de caracteres.
\item[substring]$S$ será substring se não estiver de acordo com nenhuma das condições anteriores.
\end{description}
0
, onde S' é um outro conjunto de caracteres.
ffl sufixo
S será sufixo de P se P = S
0
+ S, onde S' é um outro conjunto de caracteres.
ffl substring
S será substring se não estiver de acordo com nenhuma das condições anteriores.
De posse desses conceitos, escreva um programa em C que requisita uma string P qualquer, a
armazena, e logo depois requisita a entrada de uma string S e imprime na tela se S é prefixo, sufixo
ou substring de P.
De posse desses conceitos, escreva um programa em C que requisita uma string $P$ qualquer, a
armazena, e logo depois requisita a entrada de uma string $S$ e imprime na tela se $S$ é prefixo, sufixo