Jump to content
Luís Paiva

[Resolvido] Process returned -1073741819 (0xC0000005)

Recommended Posts

Luís Paiva

alguém me pode explicar o porquê deste erro? Estou a aprender a programar mas ainda sei muito pouco.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int idade;
    printf ("Qual a tua idade: ");
    scanf ("%d, &idade");
    printf ("Tu tens %d anos de idade", idade);

    return 0;
}

 

Share this post


Link to post
Share on other sites
Danny
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int idade;
    printf ("Qual a tua idade: "); -> printf("Digite a sua idade: \n");  Mete sempre \n depois do texto
    scanf ("%d, &idade");  -> scanf("%i",&idade); para numeros inteiros tens de por %i. e esta linha estava 100% errada 
    printf ("Tu tens %d anos de idade", idade); ->printf("Tem %i anos\n",idade); como em cima meti %i para chamar a variavel idade tens de por %i

    return 0;
}
Edited by pwseo
tags de código

Share this post


Link to post
Share on other sites
Luís Paiva

Já me deu correto. Tinha uma aspa na posição errada. Mas experimentei com o %d e o %i e deu exatamente o mesmo.

Share this post


Link to post
Share on other sites
HappyHippyHippo

podes apresentar concretamente o que te apareceu (se for uma imagem é melhor)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
thoga31
Em 26/02/2019 às 11:52, Danny disse:

printf ("Qual a tua idade: "); -> printf("Digite a sua idade: \n");  Mete sempre \n depois do texto

Não é preciso sempre um \n depois do texto: ele é usado em qualquer ponto do texto quando é preciso. Se me apetecer fazer printf("batatas \n cozidas");, nada mo impede.

Em 26/02/2019 às 11:52, Danny disse:

para numeros inteiros tens de por %i. e esta linha estava 100% errada 

O problema não era o %d, uma vez que para inteiros é indiferente o %d e o %i (sendo o %d amplamente mais usado), mas já que estamos numa de ser exaustivos, seria simpático no mínimo dizer que o que estava errado era a posição da aspa (e explicar o porquê).

Em 26/02/2019 às 11:52, Danny disse:

como em cima meti %i para chamar a variavel idade tens de por %i

Ou %d, conforme disse acima.

 

Em 26/02/2019 às 20:06, Luís Paiva disse:

Tinha uma aspa na posição errada.

Exacto. A ideia é que o scanf, tal como qualquer função na matemática, recebe uma série de argumentos por uma ordem bem determinada. Por exemplo, se tiveres a função f(x,y)=x+2y, quando fazes f(1,2), é o x que é 1 e não o y pois a ordem interessa.

No caso do scanf, o primeiro argumento é o formato esperado que o programa pretende obter do teclado: ao colocares um %d, estás a indicar que esperas um inteiro. Agora, o valor lido tem de ser guardado em algum lado, mas onde? Essa é a função do argumento seguinte: indicas, com um &, para qual variável do tipo int queres que o valor lido no teclado seja armazenado (aprenderás mais tarde o porquê do & no scanf, em princípio). Portanto, este será o aspecto geral:

scanf("%formato", &variavel);

Não sei se já aprendeste funções, mas na altura em que as aprenderes verás que o protótipo do scanf é qualquer coisa como isto:

int scanf(char const *fmt, ...);

Quando aprenderes protótipos de funções, irás entender ainda melhor esta questão dos argumentos e verás que nada te impede de ler mais que um valor no mesmo scanf. 😉

 

Cumprimentos.


Knowledge is free!

Share this post


Link to post
Share on other sites
Luís Paiva

Obrigado a todos. Ainda sou faixa branca em programação.🙄

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.