Ir ao conteúdo
  • Cadastre-se

C Erro na exibição do código


Guisma

Posts recomendados

Bom dia galera, estou estudando a linguagem C e estou tentando fazer um código onde eu peço informações sobre o usuário e em seguida os coloco em um paragrafo fixo com as informações pedidas, mas está dando erro quando eu rodo.



#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
int main ()
{
    char nome_completo[30];
    char nome_empresa[30];
    char nome_captalizadora[30];
    char nome_produto[10];
    char CPF[11];
    char CNPJ[20];
    char cargo[10];
    char endereco[150];
    int rg;
    
    printf("RG: ");
    scanf("%d", &rg);

    printf("Nome Completo: ");
    scanf("%s", nome_completo);

    printf("Razão Social: ");
    scanf("%s", nome_empresa);
  

    printf("Nome da Captalizadora: ");
    scanf("%s", nome_captalizadora);
  
    printf("Nome do Produto: ");
    scanf("%s", nome_produto);

    printf("CPF: ");
    scanf("%s", CPF);

    printf("CNPJ: ");
    scanf("%s", CNPJ);

    printf("Cargo: ");
    scanf("%s", cargo);

    printf("Endereco: ");
    scanf("%s", endereco);


    printf("Com interveniência de GESTORA DE MARKETING AUTORIZADO: %s , pessoa jurídica de direito privado, inscrita no CNPJ sob o nº %s , com sede à %s , representada na forma de seu contrato social, na pessoa de seu %s , o Sr.(a) %s , portador do documento de identidade nº %d", nome_empresa, CNPJ, endereco, cargo, nome_completo, rg);
}

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Guisma

O erro que você está enfrentando é provavelmente devido ao uso da função scanf para ler a string de endereço. A função scanf pode ser usada para ler dados numéricos, mas não é recomendada para ler strings, pois ela para de ler quando encontra um espaço em branco. Isso significa que se o endereço contiver espaços, ele será truncado e somente a primeira parte será armazenada na variável.

 

Uma solução para esse problema é usar a função fgets() para ler a string de endereço. A função fgets() lê uma string até o tamanho máximo especificado ou até encontrar um caractere de nova linha, o que garante que a string inteira será lida. Aqui está um exemplo de como você poderia usar fgets() para ler a string de endereço:

 

    printf("Endereco: ");
    fgets(endereco, sizeof(endereco), stdin);

 

Outra solução é usar gets() mas essa função foi descontinuada na maioria das versões mais recentes do C por questões de segurança.

 

Além disso, é recomendável usar a função strlen() para verificar o tamanho da string lida antes de imprimir o parágrafo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Guisma    como o  @Adriano_web   o erro é no scanf que só lê  até encontrar um espaço em branco ,  e também costuma pular algumas leituras ,  use o fgets , e vai precisar remover o newLine "\n"  pego pelo fgets , pois senão na hora de escrever essas variáveis vai pular uma linha para baixo , pois é isso que newLine faz , e você pode usar um código parecido com esse :

#define     _WIN32_WINNT 0x600
#define     _h GetStdHandle(STD_OUTPUT_HANDLE)
#include    <stdio.h>
#include    <stdlib.h>
#include    <conio.h>
#include    <string.h>
#include    <windows.h>
int main( int Argc , char *Argv[] )
{
    char nome_completo     [ 30];
    char nome_empresa      [ 30];
    char nome_captalizadora[ 30];
    char nome_produto      [ 10];
    char CPF               [ 11];
    char CNPJ              [ 20];
    char cargo             [ 10];
    char endereco          [150];
    char rg                [ 10];
    printf("RG: ");
    fgets (rg,sizeof(rg),stdin);
    rg    [strlen(rg) - 1]                 = 0;
    printf("Nome Completo: ");
    fgets (nome_completo,sizeof(nome_completo) , stdin);
    nome_completo[strlen(nome_completo)-1] = 0;
    printf("Raz%co Social: ",198);
    fgets (nome_empresa,sizeof(nome_empresa) , stdin);
    nome_empresa[strlen(nome_empresa) - 1] = 0;
    printf("Nome da Captalizadora: ");
    fgets (nome_captalizadora,sizeof(nome_captalizadora) , stdin);
    nome_captalizadora[strlen(nome_captalizadora)-1] = 0;
    printf("Nome do Produto: ");
    fgets (nome_produto,sizeof(nome_produto) , stdin);
    nome_produto[strlen(nome_produto) - 1] = 0;
    printf("CPF: ");
    fgets (CPF,sizeof(CPF),stdin);
    CPF   [strlen( CPF ) - 1 ]             = 0;
    printf("CNPJ: ");
    fgets (CNPJ,sizeof(CNPJ),stdin);
    CNPJ  [strlen(CNPJ)-1] = 0;
    printf("Cargo: ");
    fgets (cargo,sizeof(cargo),stdin);
    cargo [strlen(cargo)-1] = 0;
    printf("Endereco: ");
    fgets (endereco,sizeof(endereco),stdin);
    endereco[strlen(endereco)-1] = 0;
    printf("\nCom interveni%cncia de GESTORA DE MARKETING AUTORIZADO: %s\n",136, nome_empresa);
    printf("pessoa jur%cdica de direito privado, inscrita no CNPJ sob o n%c %s\n",161,167,CNPJ);
    printf("com sede %c %s\n",133,endereco);
    printf("representada na forma de seu contrato social, na pessoa de seu %s\n",cargo);
    printf("o Sr.(a) %s\n",nome_completo);
    printf("portador do documento de identidade n%c %s\n",167, rg);
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

 Boa noite !!

Eu estou com muita dificuldade no uso do codé blocks ,estou começando agora na faculdade na área de programação.

Escrevi o código dentro das orientações do livro porém deu erro, alguém pode me ajudar?     É uma programação simples  onde se pede o peso qualquer e se tiver acima do peso, recebe a mensagem " Você está acima do peso". Se tiver abaixo recebe a mensagem " Você está abaixo do peso".  Caso o peso esteja dentro do esperado, a pessoa rebe a mensagem" Parabéns você está no peso ideal..

 

 

 

 

 

 

 

 

 

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

@Edenilson do carmo

está um exemplo de código em C++ que faz exatamente o que você descreveu:.

 

#include <iostream>

using namespace std;

 

int main() {

    double peso;

    cout &#8203;`oaicite:{"index":0,"invalid_reason":"Malformed citation << \"Insira o seu peso: \";\n cin >>"}`&#8203; peso;

    if (peso > 70) {

        cout << "Você está acima do peso." << endl;

    } else if (peso < 60) {

        cout << "Você está abaixo do peso." << endl;

    } else {

        cout << "Parabéns, você está no peso ideal." << endl;

    }

    return 0;

}

 

Este programa pede ao usuário para inserir o seu peso, armazena o valor em uma variável chamada "peso", e então usa o "if-else" para verificar o peso. Se o peso for maior do que 70, a mensagem "Você está acima do peso" é exibida. Se o peso for menor do que 60, a mensagem "Você está abaixo do peso" é exibida. Se o peso estiver entre 60 e 70, a mensagem "Parabéns, você está no peso ideal" é exibida.

 

Espero que isso ajude! Se você tiver alguma dúvida sobre o código, não hesite em perguntar.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Edenilson do carmo    o codeblocks é um IDE dos mais simples e fáceis de usar ,  e para criar um arquivo de console , você clica em file / new / file / escolhe o tipo de arquivo e qual linguagem  c ou c++ /coloca o nome do programa /  e nos pontinhos escolhe em qual pasta vai salvar / clica em OK ,   e depois escreva os comandos e funções de seu programa .

1367098723_filecodeblocks_2.thumb.jpg.69acfb13d6ee86f922c9058bf49398e3.jpg

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!