Ir para o conteúdo
tukith

Primeiro programa em C

Mensagens Recomendadas

tukith    0
tukith

galera, sou iniciante em vb 6, sei fazer alguns programinhas e quero aprender C também, fiz uma coisinha básica:

#include <stdio.h>

         main()
         {
               printf("Este é o meu primeiro programa em C.\n");
         }

compilo tudo certo mas quando vou abrir o .exe ele abre e fecha rapidamente, o que faço para ele abrir e não fechar sozinho? vlw galera

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
tukith    0
tukith

galera, sou iniciante em vb 6, sei fazer alguns programinhas e quero aprender C também, fiz uma coisinha básica:

#include <stdio.h>

      main()

      {

            printf("Este é o meu primeiro programa em C.\n");

      }

compilo tudo certo mas quando vou abrir o .exe ele abre e fecha rapidamente, o que faço para ele abrir e não fechar sozinho? vlw galera

esquece galera, já sei o comando:

system("PAUSE");

vlw msm assim

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
André Sousa    0
André Sousa

Boas, tambem sou iniciante, no entanto não sei como colocar este comando, pois se o colocar desta forma:

#include <stdio.h>

main()

{

      printf("Hello World");

      system("PAUSE");

}

O compilador encontra um erro, no código. Alguém me pode ajudar?

ps: tive a pesquisar sobre esta função e tenho lido que é um mau hábito, opiniões?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Baderous    31
Baderous

O system("PAUSE") só funciona em Windows e consiste numa chamada ao SO.

Podes optar por correr o programa pela linha de comandos que ele já não fecha ou então substituis o system("PAUSE") por getchar() que é uma função que lê um caracter do teclado e, neste caso, fica à espera que o utilizador carregue numa tecla antes de fechar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FabioM    0
FabioM

Também me está a acontecer o mesmo, tou a usar o Dev c++ e o programa só se mantêm se escrever a função system("PAUSE"); ou getchar();

Começei ontem a aprender esta linguagem e tou a ler o livro "Linguagem C" do Luis Damas mas não menciona que só com o codigo que pus abaixo o programa não se mantêm

#include<stdio.h>
main()
{   
   printf("Hello World");
}

Supostamente a janelinha do MS-DOS não têm que se manter até a desligarmos?

Esta é a minha primeira duvida lol

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triton    12
Triton

Supostamente a janelinha do MS-DOS não têm que se manter até a desligarmos?

O que o Dev-C++ faz é executar o teu programa numa linha de comandos (que nas versões mais recentes do Windows não são verdadeiramente o MS-DOS). Neste caso ele fecha a janela automaticamente, que não devia fazer para poderes ver o output do teu programa. A solução é utilizar o getchar(), como já foi aqui referido.

Ou então utiliza outro editor como o Code::Blocks, que não fecha a janela automaticante. :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Jeronimus Linuxius    0
Jeronimus Linuxius
O que o Dev-C++ faz é executar o teu programa numa linha de comandos (que nas versões mais recentes do Windows não são verdadeiramente o MS-DOS).

Nas versões do windows baseadas em NT (NT4, 2000 e versões mais recentes, tirando o millenium), a linha de comandos tem pouco ou nada a ver com o MS-DOS. A própria API do windows tem mecanismos nativos para escrever na consola.

A janela de texto só se "transforma" em MS-DOS quando corres um executável MZ (i.e. um EXE nativo do DOS). Nesse caso, o programa é executado em modo de emulação de 16 bits e há wrappers que convertem as chamadas do DOS em chamadas da API do windows (nomeadamente aquelas que escrevem no ecrã).

JJ

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Jeronimus Linuxius    0
Jeronimus Linuxius
compilo tudo certo mas quando vou abrir o .exe ele abre e fecha rapidamente, o que faço para ele abrir e não fechar sozinho? vlw galera

Isso acontece porque o programa termina logo. Em windows 9x havia uma opção para não fechar a janela automaticamente, mas já a procurei muitas vezes no xp e não encontrei.

JJ

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FabioM    0
FabioM

O que o Dev-C++ faz é executar o teu programa numa linha de comandos (que nas versões mais recentes do Windows não são verdadeiramente o MS-DOS). Neste caso ele fecha a janela automaticamente, que não devia fazer para poderes ver o output do teu programa. A solução é utilizar o getchar(), como já foi aqui referido.

Ou então utiliza outro editor como o Code::Blocks, que não fecha a janela automaticante. :P

Ok, tou a usar a função getchar() ms terá que tar sempre no codigo?

Ou é melhor continuar a ler o livro e esquecer isto por agora? :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FabioM    0
FabioM

Porque é que os caracteres especiais com acento ou cedilha "ç" ou "à" etc não são representados tal como os escrevemos?

Existe outra forma de escrevermos estes caracteres no codigo?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

Porque o emulador do DOS utiliza simplesmente os caracteres da tabela ASCII, enquanto o Windows utiliza o Unicode. Os valores dos caracteres especiais, acima do 128 no ASCII pode diferir da Unicode.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FabioM    0
FabioM

Porque o emulador do DOS utiliza simplesmente os caracteres da tabela ASCII, enquanto o Windows utiliza o Unicode. Os valores dos caracteres especiais, acima do 128 no ASCII pode diferir da Unicode.

Ok, mas se quiserem representar os caracteres Unicode no programa que estão a fazer como fazem?

Mudam alguma coisa no emulador?

Mudam

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

Os caracteres especiais existem na mesma no ASCII, mas não são tantos, e como o valor muda, se quiseres mostrar correctamente, fazes algo do género

printf("Ol%c", 160);

Em que o 160 é o valor da tabela ASCII de à. Logo isto irá mostrar-te: Olá

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

Repara que em C cada caracter corresponde a um valor numérico. Com aquele printf("%c", 160) o %c indica que queres mostrar um caracter cujo valor é 160. Desta maneira não existem discrepâncias entre o teu Editor, que provavelmente usa Unicode, e o emulador de DOS que usa ASCII. Logo esta é a solução que uso para apresentar caracteres especiais, mas não sei se é a única.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FabioM    0
FabioM

Eu continuo a estudar pelo livro "Linguagem C" do Luis Damas mas deparo-me com uma duvida que se prende com a execução dos programas.

Por exemplo fiz este exercicio do livro que contêm o seguinte código:

#include <stdio.h>
main()
{
      int num;
      
      printf ("Introduza um Nº :  ");
      scanf ("%d", &num);
      printf ("O Nº introduzido foi %d\n",num);
      getchar();
      }

Quando executo o programa apareçe-me a primeira string, introduzo um nº carrego no Enter mas o programa fecha-se.

È que eu continuo a seguir o livro e a fazer os exemplos de programas que lá estão mas tenho sempre que usar o getchar(); para a janela não fechar logo o programa não corre como deve como neste caso e esta questão ainda não foi explicada no livro.

Suponho que esta questão não tenha nada a ver com o compilador...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Triton    12
Triton

È que eu continuo a seguir o livro e a fazer os exemplos de programas que lá estão mas tenho sempre que usar o getchar(); para a janela não fechar logo o programa não corre como deve como neste caso e esta questão ainda não foi explicada no livro.

Não corre como deve como assim?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

O que me parece é que o getchar() está a apanhar o teu enter. Se colocares outro resolves o problema, mas é mais um "prego" do que outra coisa. Outra solução é chamares o programa directamente do emulador do DOS, desta maneira, ele não necessita do getchar().

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FabioM    0
FabioM

Como faço para chamar do emulador do DOS?

Desculpem estas duvidas básicas mas ainda sou leigo nesta matéria e só agora entrei neste mundo da programação.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

Start (Iniciar) -> Run(Executar) e digitas cmd depois pressionas OK. Depois basta indicares o caminho completo para o teu programa do género C:\Testes\exer2.exe

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FabioM    0
FabioM

anolsi assim o programa já funciona bem, ao contrário de quando carregava directamente no ficheiro.

Qual é a causa disto?

È que depois se quiser fazer uma aplicação (embora ainda seja bem cedo) é o ficheiro .exe que vai correr o programa e convinha correr normalmente sem ter que o ir buscar ao Command Prompt.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

O que acontece é o seguinte: Quando executas o teu executável directamente a partir do Windows, este reconhece-o como um programa para o emulador. O emulador executa o programa, e quando termina a execução do programa, fecha-se. Se pelo contrário, já tens o emulador aberto, este só se fechará quando digitares exit (a forma mais correcta de fechar o emulador). Por isso pode ver o teu programa a correr, e o que ele te mostra sem que isso desapareça.

Por enquanto utiliza assim, sem te preocupares, quando no livro for falado nesse problema, então começas a utilizar isso. Mesmo, porque muitos programas funcionam, com os ciclos e menus, sem necessitarem do getchar().

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade