Jump to content

Usar comandos do CMD


kwnds
 Share

Recommended Posts

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:

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

char p[20];
printf ("Tens mais de dezoito anos? ");
scanf("%s",&p);
if (p==sim) goto a;
else goto final;

Que estou a fazer mal?

Abraços

Link to comment
Share on other 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?

Link to comment
Share on other sites

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

http://img233.imageshack.us/img233/6861/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 statement. Existe alguma maneira de eu fazer dois comandos por exemplo:printf("A resposta é 1") e "getch();"? é que sempre que faço 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, fizeste bem em chamar-me á razão. Afinal de contas, é de pequenino que se torce o pepino.

Abraços

Link to comment
Share on other 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 posso fazê-lo?

Outra duvida: existe alguma maneira de eu escrever uma variável com o meu ip?

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

Abraços e desculpem a maçada

Abraços

Link to comment
Share on other 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");
Link to comment
Share on other 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

Link to comment
Share on other sites

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

Citação

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... 👍 por isso não limita muito 😄

Link to comment
Share on other 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

Link to comment
Share on other sites

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

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

Link to comment
Share on other 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

Link to comment
Share on other 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. 👍

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

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

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.

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Estavas a pensar em tipos de processadores? 👍

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  ?

Link to comment
Share on other 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

Link to comment
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
 Share

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