Logo Hardware.com.br
prhio
prhio Novo Membro Registrado
17 Mensagens 7 Curtidas

[Resolvido] Dúvida em C

#1 Por prhio 02/06/2017 - 18:54
Opá, será que poderia ajudar um gafanhoto?
Qual a lógica que estou tentando fazer.Pedir um nome e armazenar no vetor nome, passar o endereço de memoria de vetor com o nome para ponteiro, imprimir na tela, depois ponteiro recebe o segundo vetor com seu valor e escreve na tela o valor do primeiro vetor com o novo nome armazenado.
[code=c]
//quero passar um endereço de memoria de um vetor para um ponteiro, e depois passar o valor de string para o ponteiro.
#include
main(){
char nome[100],nome1[100]="paulo",*pont;
printf("Digite seu nome: ");
scanf("%s", &nome);
pont=nome;//pont recebe o endereço de nome
printf("Meu nome \202 %s\n", nome);
*pont=nome1;//pont recebe o valor de nome1 e envia o valor no endereço de nome.
printf("Meu nome \202 %s", *pont);
}

[/code]
1-Uma matriz é um ponteiro constante, está correto isso?Testei com & e sem para ter certeza, passagem por referencia de pont=nome;.
2-Cadeia de Caracter é entre aspas duplas?(apostila....)
3-Está correto está forma de fazer, da para fazer mas não é semantico?
Imagens do debbuger:
Case 1
Os vetores armazenaram a entrada.
https://prntscr.com/ff8pi5
Case 2
Ponteiro recebe endereço da variavel e valor.
https://prntscr.com/ff8pjy
Case 3
Erro na hora de armazenar o valor da variavel nome1, primeira letra sobreescrita
']https://prntscr.com/ff8pn8

Procurei no forum, acabei aprendendo sobre a biblioteca string.h e sua função strcpy.
Como o código ficou com a solução:
[code=c]
#include
#include
main(){
char nome[100],nome1[100]="paulo";
printf("Digite seu nome: ");
scanf("%s", &nome);
printf("Meu nome \202 %s\n", nome);
strcpy(nome,nome1);//pont recebe o valor de nome1 e envia o valor no endereço de nome.
printf("Meu nome \202 %s", nome1);
}
[/code]
Mesmo assim gostaria de entender a falha acima.
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#2 Por tpcvasco
05/06/2017 - 09:12
Na compilação já dá pra ver os problemas:

str.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main(){
^
str.c: In function ‘main’:
str.c:6:11: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[100]’ [-Wformat=]
scanf("%s", &nome);
^
str.c:9:10: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
*pont=nome1;//pont recebe o valor de nome1 e envia o valor no endereço de nome.
^
str.c:10:12: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=]
printf("Meu nome \202 %s", *pont);


Foi só consertar os warnings:


//quero passar um endereço de memoria de um vetor para um ponteiro, e depois passar o valor de string para o ponteiro.
#include <stdio.h>
int main(){
char nome[100],nome1[100]="paulo",*pont;
printf("Digite seu nome: &quot;
scanf("%s", nome);
pont=nome;//pont recebe o endereço de nome
printf("Meu nome \202 %s\n", nome);
pont=&nome1[0];//pont recebe o valor de nome1 e envia o valor no endereço de nome.
printf("Meu nome \202 %s", pont);
}
"Milhouse: - Médicos e bombeiros são heróis.
Bart Simpson: - Olha, as casas continuam pegando fogo e as pessoas continuam doentes. Os verdadeiros heróis são os Schwarzenegger's, os Stallone's, e, em menores proporções, os Vandame's..."
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal