kwnds Posted November 6, 2006 at 07:31 PM Report #62484 Posted November 6, 2006 at 07:31 PM 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
karva Posted November 6, 2006 at 07:32 PM Report #62485 Posted November 6, 2006 at 07:32 PM tens que por: if (p=="sim") goto a; Proud LEIC-A@IST student!
kwnds Posted November 6, 2006 at 07:50 PM Author Report #62498 Posted November 6, 2006 at 07:50 PM Obrigado "karca", agora já consigo. Apenas continuo com a duvida de executar os comandos do cmd em linguagem c... Abraços
Warrior Posted November 6, 2006 at 07:52 PM Report #62501 Posted November 6, 2006 at 07:52 PM 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?
kwnds Posted November 6, 2006 at 08:16 PM Author Report #62509 Posted November 6, 2006 at 08:16 PM 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
kwnds Posted November 6, 2006 at 08:23 PM Author Report #62512 Posted November 6, 2006 at 08:23 PM 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
Warrior Posted November 6, 2006 at 08:28 PM Report #62514 Posted November 6, 2006 at 08:28 PM 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");
kwnds Posted November 6, 2006 at 08:31 PM Author Report #62516 Posted November 6, 2006 at 08:31 PM 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
Soulsick Posted November 6, 2006 at 08:32 PM Report #62519 Posted November 6, 2006 at 08:32 PM 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 😄
kwnds Posted November 6, 2006 at 08:42 PM Author Report #62526 Posted November 6, 2006 at 08:42 PM 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
Soulsick Posted November 6, 2006 at 08:55 PM Report #62528 Posted November 6, 2006 at 08:55 PM tenta com a biblioteca stdlib.h é capaz de funcionar
Warrior Posted November 6, 2006 at 09:01 PM Report #62535 Posted November 6, 2006 at 09:01 PM Exacto, system() na stdlib.h Soulsick: o que varia são os comandos a executar. "pause", "ipconfig", nada disso é de linux.
Soulsick Posted November 6, 2006 at 09:05 PM Report #62539 Posted November 6, 2006 at 09:05 PM 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 👍
kwnds Posted November 6, 2006 at 10:43 PM Author Report #62568 Posted November 6, 2006 at 10:43 PM 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
Hipnoted Posted November 6, 2006 at 10:56 PM Report #62570 Posted November 6, 2006 at 10:56 PM 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"
Soulsick Posted November 6, 2006 at 11:00 PM Report #62571 Posted November 6, 2006 at 11:00 PM codar para multi plataforma ou seja.. criares um código que tanto funcione no Windows como no GNU/Linux por exemplo... 👍
Hipnoted Posted November 6, 2006 at 11:02 PM Report #62572 Posted November 6, 2006 at 11:02 PM 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"
Soulsick Posted November 6, 2006 at 11:24 PM Report #62577 Posted November 6, 2006 at 11:24 PM 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 ?
kwnds Posted November 7, 2006 at 07:22 PM Author Report #62710 Posted November 7, 2006 at 07:22 PM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now