Escreva em C um código para inverter uma string utilizando uma função externa ao main(). Leia a string no main, envie como parâmetro de referência e faça a inversão. Se o usuário entrar, por exemplo, com a string cristal, o programa retorna latsirc.
Passo 1
Beleza, vamos lá! O que você precisa fazer é escrever um programa em C que inverte uma string. A gente vai trabalhar com funções, ou seja, vai ter uma função fora do
main
que vai fazer a inversão. Primeiro, o main
vai ler a string que o usuário digita, vai passar essa string para a função de inversão, e aí o programa vai imprimir a string invertida. Vamos precisar entender como usar funções, como manipular strings em C e como passar parâmetros por referência.Passo 2
Primeiro, vamos lembrar que em C, strings são basicamente arrays de caracteres terminados com um caractere nulo
'\0'
. Para inverter uma string, a gente precisa trocar o primeiro caractere com o último, o segundo com o penúltimo, e assim por diante, até chegar no meio.Passo 3
Vamos criar a função que vai inverter a string. Essa função vai receber a string como um parâmetro. Para que as alterações feitas na string dentro da função afetem a string original no
main
, vamos passar o endereço da string, ou seja, passar por referência.Passo 4
Dentro da função de inversão, vamos usar um laço
for
para percorrer a string até a metade. Em cada iteração, vamos trocar os caracteres nas posições i
e n - i - 1
, onde n
é o tamanho da string. Para isso, vamos precisar da função strlen
da biblioteca string.h
para determinar o comprimento da string.Passo 5
Agora, no
main
, vamos pedir para o usuário digitar a string. Vamos armazenar essa string em um array de caracteres. Depois, vamos chamar a função de inversão, passando a string como parâmetro. Por fim, vamos imprimir a string já invertida.Passo 6
Vamos juntar tudo isso no código:
#include <stdio.h>
#include <string.h>
// Função para inverter a string
void inverterString(char *str) {
int n = strlen(str);
char temp;
for(int i = 0; i < n / 2; i++) {
temp = str[i];
str[i] = str[n - i - 1];
str[n - i - 1] = temp;
}
}
int main() {
char string[100];
printf("Digite uma string: ");
scanf("%s", string);
inverterString(string);
printf("String invertida: %s\n", string);
return 0;
}
Resposta
Aqui está o código completo que inverte uma string usando uma função externa ao
main
:#include <stdio.h>
#include <string.h>
// Função para inverter a string
void inverterString(char *str) {
int n = strlen(str);
char temp;
for(int i = 0; i < n / 2; i++) {
temp = str[i];
str[i] = str[n - i - 1];
str[n - i - 1] = temp;
}
}
int main() {
char string[100];
printf("Digite uma string: ");
scanf("%s", string);
inverterString(string);
printf("String invertida: %s\n", string);
return 0;
}
Quando você roda esse programa e digita, por exemplo, “cristal”, ele vai imprimir “latsirc”. Legal, né? Se tiver alguma dúvida, só perguntar!