Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fbruno

Comportamento estranho(Campos de um registros e strcpy)

Recommended Posts

Caros, notei um comportamento estranho da função strcpy no seguinte trecho de código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <locale.h>
	
typedef struct data{
	int dia,mes,ano;
}data;
	
typedef struct cliente{
	char CPF[11],nomeCompleto[60];
	data nascimento;
}cliente;
	
typedef struct conta{
	cliente cliente;
	int numero;
	float saldo;
}conta;
	
int main(){
	setlocale(LC_ALL, "Portuguese");
	conta ccs[10];
	srand( (unsigned)time(NULL) );
		
		
	 // Preenchendo diretamente
		
		
	strcpy(ccs[0].cliente.nomeCompleto, "João dos Anzóis Silva");
	strcpy(ccs[0].cliente.CPF,"12345678910"); 
	printf("Titular %s, CPF:%s \n", ccs[0].cliente.nomeCompleto, ccs[0].cliente.CPF);
	ccs[0].cliente.nascimento.dia = 15;
	ccs[0].cliente.nascimento.mes = 2;
	ccs[0].cliente.nascimento.ano = 1990;
	ccs[0].numero = rand() % 101;
	ccs[0].saldo = 100.00;
		
	strcpy(ccs[1].cliente.CPF,"12345678912");
	strcpy(ccs[1].cliente.nomeCompleto, "Sicrano Alves Medeiro");
	printf("Titular %s, CPF:%s \n", ccs[1].cliente.nomeCompleto, ccs[1].cliente.CPF);
	ccs[1].cliente.nascimento.dia = 24;
	ccs[1].cliente.nascimento.mes = 10;
	ccs[1].cliente.nascimento.ano = 1986;
	ccs[1].numero = rand() % 101;
	ccs[1].saldo = 500.00;

    return 0;
}

O programa compilou, mas exibiu os seguintes resultados:

 

Titular , CPF:12345678911
Titular Sicrano Alves Medeiro, CPF:12345678922Sicrano Alves Medeiro
Parece haver uma confusão nos campos do registro. Alguém pode me ajudar?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido. O problema é que a string copiada não tinha o caractere final '\0'.

 

Então resolvi com adição desse caractere após a cópia da string, como no exemplo abaixo:

strcpy(ccs[0].cliente.nomeCompleto, "João dos Anzóis Silva");
ccs[0].cliente.nomeCompleto[strlen(ccs[0].cliente.nomeCompleto)] = '\0';
strcpy(ccs[0].cliente.CPF,"12345678910"); 
ccs[0].cliente.CPF[strlen(ccs[0].cliente.CPF)] = '\0';

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Leandro T.
      pessoal bom dia alguém poderia me ajudar com o FormValidation?
       
      "nomefuncionario": {
                  validators: {
                      
                  
                    notEmpty: {
                      message: "Nome completo do funcionário é obrigatório."
                    } , <=== este funciona normalmente
                      
                      callback: {  // agora o callback nao consigo fazer funcionar
                              message: 'este nome não é valido',
                              callback: function (input) {
                                  if (input.value = 'algum valor digitado') {
                                      return true
                                  } }},
                      
                      
                      
                  }
    • Por nathanmoreira
      Após diversos cálculos provindos de um código, recebo um número inteiro ao qual não sei o tamanho ao certo (pode variar de 1 pra frente). Quero passar esse número para string e formatar ele de maneira a colocar um ,00 no final e, a cada 3 números antes da virgula, um ponto. Ou seja, deixar o número num formato como: 45.114.477,00
       
      Como fazer? 
    • Por TK_T
      olá sou iniciante consegui fazer um o código de um exercício só que quando eu peço o valor 12ab ele lê como numérica alguém pode me ajudar? 
      Exercício: Leia uma string e diga se a mesma é numérica (na base decimal) ou não.
      Ex.: "123" -> numérica
      "abc" -> não numérica
      "12ab" -> não numérica
      "12.34" -> numérica 
      #include <stdio.h> int main() { char Numero; printf("Digite Algo: "); scanf("%c", &Numero); if(Numero == '1' || Numero == '2' || Numero == '3' || Numero == '4' || Numero == '5' || Numero == '6' || Numero == '7' || Numero == '8' || Numero== '9' || Numero == '0') printf("\tNumérica...\n"); else printf("\tNão Numérica\n"); return 0; }  
    • Por clayton.lima2020
      Boa Tarde!
       
      Pessoal estou com um problema para resolver:
       
      Tenho um uma string que é um Nome:  SYLVIA
       
      Eu preciso fazer uma uma busca nessa string achar a letra Y e depois verificar se após a letra Y a próxima letra é Vogal ou Consoante.
       
      No caso do nome SYLVIA a próxima letra é L então retorna Consoante.
       
      Alguém sabe montar esse algoritmo ai?
    • Por unset
      Olá, estou com uma pequena dúvida 
       
      Como transformar a data que recebemos com a função date("Y-m-d H:i") em uma string 2021-04-22T00:00 exatamente nesse formato ?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.