• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tukith

Primeiro programa em C

26 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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? :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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á

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Utiliza-se sempre o comando: ("%c, nº correspondente da lista");, para recorrer a um carácter especial do ASCII?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

È 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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

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