1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C - começei agora

Discussão em 'Programação' iniciada por metRo_, 26 de Julho de 2006. (Respostas: 16; Visualizações: 5111)

  1. metRo_

    metRo_ Power Member

    Começei esta noite com C.

    Tenho duas duvidas, que o video pelo qual me estou a guiar, visto que é um curso em video, nao me tirou as duvidas.

    Código:
    #include <stdio.h>
    
    main()
    {
        int age;
        
        printf("Hello World\n");
        printf("Please enter your age: ");
        scanf("&d", &age);
        printf("The age you entered is %d\n", age);
        
        fflush(stdin);
        getchar();
    }
    com este code, eu devia colocar a idade que tenho e aparecia a idade que eu pus, mas o que acontece é que aparece um 2, que tambem apareceu com o homenzinho explikou umas cenas bem para tras...

    a outra duvida é porque é que o run não funciona e o exe abre em full screen.. :S

    abraços

    Sugestão: Não era melhor dentro da programação abrir varios directorios, tipo para C, html, java, e por ai fora?!
     
  2. Favas

    Favas Power Member

    scanf("&d", &age);

    copiaste mal a linha.

    o correcto é

    scanf("%d", &age);

    quanto ao resto, nao percebi mt bem, tenta alt + enter quando executas o .exe.

    cumps, e força nisso.
     
  3. El_UnO

    El_UnO 1st Folding then Sex

    Código:
        fflush(stdin);
        getchar();
    O que pretendes com estas duas linhas? As anteriores estão correctas e chegam para o teres o output que queres.

    Mesmo assim experimentei com o código igual ao k puseste e dá..não altera nada :P

    EDIT: Ups, o Favas tem razão...nem reparei que tinhas posto & e com o hábito pus logo % :D
     
  4. metRo_

    metRo_ Power Member

    Quando dissest que tinha passado mal a linha vi logo onde me tinha enganado. lol
    Tipo quando faço run, ele não executa, e quando abro o exe, ele abre em ecran inteiro, e tambem noto isso, porque quando compilo, acontece o mesmo, tipo o ecran fica todo preto, parece que desliga, mas desaparece logo.. lool obrigado

    EDIT: Segundo o tutorial isto server para depois de carregares enter ao inserir a idade o exe não fechar, mas se alguem quiser dar uma explicação.
    fflush(stdin);
     
    Última edição: 26 de Julho de 2006
  5. Tuaregue

    Tuaregue Power Member

  6. XeniX

    XeniX Power Member

    Eu prefiro o include IOSTREAM. Acho que é mais facil:

    #include<iostream>

    using namespace std;
    int main ();
    {
    int age;

    cout<<"Hello world \n";
    cout<<"Please enter your age"<<endl;
    cout<<"The age you entered is"<< age << endl;


    getchar();
    return 0;
    }
     
  7. _kossak_

    _kossak_ Power Member

    Isso é C++ não é C :P
     
  8. HecKel

    HecKel The WORM

    E nem sequer tem o std::cin para o age :P Isso iria escrever "lixo" em vez de idade :)

    abraços, HecKel
     
  9. Como disseram isso é C++.

    Correção:

    #include <iostream>

    using namespace std;

    int main()
    {
    int idade;
    cout << "Ola Mundo\n";
    cout << "Digite uma idade:\n";
    cin>>idade;
    cout << "A idade colocada foi: "<<idade<<"\n";
    system("Pause");
    }
     
  10. JC

    JC Power Member

    O fflush deve ser para tirar o <Enter> do buffer do teclado para o getchar funcionar senão o getchar aceitava logo o enter do ultimo scanf que estava no buffer sem interromper o programa.
     
  11. Copa7

    Copa7 Power Member

    eu tambem tou a começar na programaçao... onde arranjastes o video?
     
  12. The-Prophecy

    The-Prophecy Power Member

    Exactamente. O scanf apanha o valor que escreveres na linha de comando, mas o [SIZE=-1]carriage return (ou enter) fica no buffer do teclado (stdin). Ou seja se n utilizaroes o fflush(stdin) o getchar() apanha o "enter" q ficou no buffer e o programa terminava na mesma.

    Quando programava em C tinha grandes dores de cabeça com este "bug" (n é bem um bug, mas ás vezes parece :P). Esta técnica é boa, mas há situações bem mais rebuscadas em que irá falhar, nomeadamente qdo houverem ciclos ou ficarem coisas no buffer que era suposto apanhar mesmo.
    [/SIZE]
     
  13. daminufe_tig

    daminufe_tig Power Member

    Para não fechar logo, experimenta isto:

    Utiliza isto para não fechar logo quando executas o exe:
    #include <stdio.h>
    main()
    {
    int age;
    printf("Hello World\n");
    printf("Please enter your age: ");
    scanf("&d", &age);
    printf("The age you entered is %d\n", age);
    fflush(stdin);
    scanf(".");
    }

    Adiciona o scanf("."); para o scanf ficar à espera de um caracter qualquer, ou seja, quando introduzido o ENTER, ele termina...

    :-D
     
  14. HecKel

    HecKel The WORM

    Não percebi essa do "." dentro do scanf..., seria mais legivel para outro programador usar scanf("%s") ou um getchar (como foi sugerido antes).

    Esse tipo de programação é um bocado à "desenrasca"...

    abraços, HecKel
     
  15. PJ

    PJ Power Member

    Pá ó pessoal para o programa não fechar logo basta adiconar esta linha no final do código

    system("pause");

    ou seja pausa de sistem. Assim só depois de pressionares uma tecla é que ele fecha, hehe.

    Cumps
     
  16. Jorge Candeias

    Jorge Candeias Power Member

    Pois mas o system("PAUSE") da erro de comando inválido no linux, acho que o melhor é mesmo usar o

    fflush(stdin);
    getchar();

    e ficam com um codigo que funciona em qualquer SO...
    praquê trafulhices se há soluções melhores pelo mesmo preço?


    Cumprimentos
     
  17. PJ

    PJ Power Member

    Pois, felizmente isto não são trafulhices e certamente que a pausa de sistema no Linux se faz com outros comandos. Talvez se pesquisares um pouco mais descubras, ou então mudas de SO :007: . Cumps
     

Partilhar esta Página