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

kwnds

[C] Dúvida: Usar comandos do CMD

19 mensagens neste tópico

Caros amigos, comecei agora a programar em C e uso o compilador Turbo C e estou com uma duvida:

-Gostava de incluir no meu programa alguns comandos que eu utilizo no CMD. Por exemplo, o "ipconfig /all" e o "netstat -an". Alguem sabe como posso fazer isto?

-Neste exemplo em baixo:

char p[20];

printf ("Tens mais de dezoito anos? ");

scanf("%s",&p);

if (p==sim) goto a;

else goto final;

O compilador dá-me o erro "Undefined symbol "sim".

Que estou a fazer mal?

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado "karca", agora já consigo.

Apenas continuo com a duvida de executar os comandos do cmd em linguagem c...

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ui, tanta asneira.

Em C não podes comparar strings directamente (na realidade, o conceito de string em C é um bocado dúbio)

Tens que usar o strcmp() para o fazer.

if (strcmp(p,"sim")==0) {

}

Segundo, GOTO NÃO É PROGRAMAR.

GOTO NÃO É PROGRAMAR.

São péssimos hábitos de programação. Emendas.

Se pensaste em usar um goto, provavelmente é a chamada de um procedimento ou função que pretendes. Caso não tenhas dado criação de funções, coloca tudo no IF, ou pesquisa na net como as criar. NÃO USES GOTO.

Quanto ao que pretendes, podes usar a função "system()"

system("pause"); será a mais conhecida. Mas também é um mau hábito pois estás a limitar o teu código ao windows..

Edit:

Já consegues? Em C "p=="sim"" está completamente errado.

Como é que consegues?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu disse que conseguia pois quando fazia compilava, o compilador não me dava erros:

hghgmz3.th.jpg

Agora, fiquei com mais uma duvida:

num if eu faço:

if (pos=1) printf("A resposta é 1");

else printf("A resposta está errada");

A minha duvida: ao fim de fazer "if (pos=1)" eu apenas consigo usar um statment. Existe alguma maneira de eu fazer dois comandos por exemplo:printf("A resposta é 1") e "getch();"? é que sempre que fazo ele da-me erro. Exemplo:

if (pos=1) printf("A resposta é 1"); getch();

else printf("A resposta está errada");

Obrigado pelo conselho de não usar goto, fizes-te bem em chamar-me á razão. Afinal de contas, é de pequenino que se torce o pepino.

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiquei com mais uma duvida relativamente ao system();

Eu quero que apareça um output a dizer o ipconfig.

Fica assim?:

#include <stdio.h>

#include <conio.h>

#include <process.h>

void main (void){

char op[700];

system("ipconfig");

}

Ele aqui devia dizer no ecrã o ipconfig como se estive a fazer um printf? Se não, como posos fazê-lo?

Outra duvida: existe alguma maneira de eu escrever uma variavel com o meu ip?

Por exemplo: quando eu andava no irc, eu fazia uma coisa deste genero: "echo o meu ip é $ip" e ele mandava uma mensagem a dizer "o meu ip é 3245.435.34". É possivel?

Abraços e desculpem a maçada

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Devo concluir que o Turbo C não segue o ANSI C.

Quanto há 1ª tua dúvida, estás a fazer o if mal (é com dois ==) e podes juntar várias instruções usando { e }

if (pos==1) {

printf("A resposta é 1");

getch();

}

else printf("A resposta está errada");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como eu não sabia que podia fazer mais que um comando no "if" eu fazia:

if (x>0) goto x;

else goto next1;

x:

printf("X é maior que 0");

getch();

goto next1;

next1:

"aqui continuava com o programa".

Agora as coisas começam a encaixar-se...

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

dekapa relativamente ao system ("ipconfig"); sim ele imprime no ecra como se fosse um printf.. agora quanto ao ip nao se se conseguirás fazer o que queres usando uma biblioteca de socks (nao te posso dizer muito mais)...

system("pause"); será a mais conhecida. Mas também é um mau hábito pois estás a limitar o teu código ao windows..

a função system também funciona no GNU/Linux... :thumbsup: por isso nao limita muito :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu tentei usar isto:

#include <process.h>

#include <stdio.h>

#include <conio.h>

void main (void){

system("ipconfig");

system("netstat-an");

printf("fim\nPrima qualquer tecla para continuar");

getch();

}

Mas o system não aparecer no TurboC apenas no Dev-C++.

Isso significa que agora, caso queira utilizar estes codigos no meu programa, vou ter de usar o Dev C++ ou existe alguma especie de patch para o turbo C que me permita isto?

Abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exacto, system() na stdlib.h

Soulsick: o que varia são os comandos a executar.

"pause", "ipconfig", nada disso é de linux.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah peço desculpa entao...  entendi mal o que pretendias dizer... :D

Visto por esse lado sim, é mau. A meu ver devias de tentar codar de maneira a que o programa fosse multi plataforma :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Codar para que fosse multi plataforma?

Ui, acho que ainda sou muito noob para isso.

Talvez daqui a 4 meses eu lá vá, mas por enquanto contento-me a criar conversor de euros para escudos...

Abraços e obrigado pela ajuda prestada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Codar para que fosse multi plataforma?

Ui, acho que ainda sou muito noob para isso.

Talvez daqui a 4 meses eu lá vá, mas por enquanto contento-me a criar conversor de euros para escudos...

Abraços e obrigado pela ajuda prestada

Pelos erros iniciais que vi no primeiro post sim, és muito novo para aventuras dessas.

Mas com trabalho tudo vai... Força nisso quando tiveres dúvidas não hesites em colocá-las aqui no fórum. :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

codar para multi plataforma ou seja.. criares um código que tanto funcione no Windows como no GNU/Linux por exemplo... :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

codar para multi plataforma ou seja.. criares um código que tanto funcione no Windows como no GNU/Linux por exemplo... :thumbsup:

Ah... Eu percebi outra coisa...  :-[  :-[

Mas isso em principio não é problema. Apenas se usares bibliotecas e caminhos de um SO próprio como por exemplo abrir um ficheiro iniciado em "C:\\...." Isto não daria em Linux.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estavas a pensar em tipos de processadores? :thumbsup:

Pois, eu as vezes escrevo as palavras e só depois é que fico na duvida se elas são as mais adequadas para aquilo que quero dizer lol  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Colegas, sabem como posso usar a tela da linha de comandos em full screen ou toda aberta? (assim que executado o software).

Eu ja tentei usar clscr(); mas não consigo (inclui a biblioteca stdio.h e conio.h e estou a usar o Dev C++).

Como posso verificar o conteudo de cada biblioteca? (Exemplo: no Turbo C eu selecionava a biblioteca e carregava "F1" e ele mostrava-me os comandos dela).

Abraços

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