Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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
Postado

@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;
}

 

Postado

 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
Postado

@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
Postado

@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

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...