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