Manipulação de Strings em C [Ajuda]
Boa tarde galera!!
Estou fazendo faculdade e na matéria de programação caiu a linguagem C, porém não entendo nada! Só um pouco da lógica mesmo, já que tenho trabalhado com outras linguagens.
Em uma das atividades pede para desenvolver um programa que inverta as variáveis, ou seja, troque elas de posição entre si. As variáveis podem ser de qualquer tipo, porém decidi fazer com "strings", invertendo o nome e sobrenome. Na hora do Output, o "Nome" não fica com valor nenhum, mas o "Sobrenome" sim.
Alguém poderia me ajudar ?
Segue o código:
Estou fazendo faculdade e na matéria de programação caiu a linguagem C, porém não entendo nada! Só um pouco da lógica mesmo, já que tenho trabalhado com outras linguagens.
Em uma das atividades pede para desenvolver um programa que inverta as variáveis, ou seja, troque elas de posição entre si. As variáveis podem ser de qualquer tipo, porém decidi fazer com "strings", invertendo o nome e sobrenome. Na hora do Output, o "Nome" não fica com valor nenhum, mas o "Sobrenome" sim.
Alguém poderia me ajudar ?
Segue o código:
#include <stdio.h> // Biblioteca para leitura e escrita
#include <string.h> // Biblioteca para manipulação de strings
// Usei uma função void pois não retorna nada, só executa uma ação
void inverteVar(char *variavel1, char *variavel2) {
// Variável para armazenar um dos parâmetros
char recebeVar[50];
// Copia a string do primeiro parâmetro e a armazena
strcpy(recebeVar, variavel1);
// Copia a string do segundo parâmetro e a armazena no primeiro parâmetro
strcpy(variavel1, variavel2);
strcpy(variavel2, recebeVar);
// Mostra na tela os valores invertidos
printf("Valores invertidos\nNome: %s\nSobrenome: %s", variavel1, variavel2);
}
// Execução do programa
int main () {
// Declara as variáveis a serem utilizadas
char nome[] = "João";
char sobrenome[] = "Henrique";
// Chama a função e passa as variáveis criadas como parâmetros
inverteVar(nome, sobrenome);
return 0;
}
Itamar Jr
Curtidas 0
Respostas
Arthur Heinrich
09/08/2023
Eu não entendo muito de C, mas ao atribuir a variável:
char nome[] = "João";
Entendo que o programa aloca 5 bytes para armazenar a palavra João, mais o terminador (caractere de código zero).
Quando você copia o sobrenome sobre o nome, está transferindo 9 caracteres do sobrenome, para uma variável que só possui 5 bytes alocados.
Provavelmente você invadiu o espaço de outras variáveis e pode ter comprometido o funcionamento do programa.
char nome[] = "João";
Entendo que o programa aloca 5 bytes para armazenar a palavra João, mais o terminador (caractere de código zero).
Quando você copia o sobrenome sobre o nome, está transferindo 9 caracteres do sobrenome, para uma variável que só possui 5 bytes alocados.
Provavelmente você invadiu o espaço de outras variáveis e pode ter comprometido o funcionamento do programa.
GOSTEI 0