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!

Exercícios relacionados