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

Fitorinaudo

Duvida em C

Recommended Posts

Fitorinaudo

boas

tou aqui com uma duvida. queria que me ajudassem como é que faço para imprimir o vector_inteiros todo sff... urgente..

Este codigo so imprime o primeiro argumento que eu der, eu quero fazer por exemplo,

./exe 1 2 3 4 5

Output:

1

2

3

4

5

Se alguem me puder ajudar agradecia.

#include <stdio.h>
#include <stdlib.h>



int main (int argc, char *argv[]) {

int i;
int vector_inteiros[10];



for(i=0; i < argc; i++){

if(strncmp( argv[i+1],"a")==0)
{

vector_inteiros[i] = atoi(argv[i+1]);

//Para imprimir todos os elementos é preciso fazer um ciclo para percorrer todos os elementos do vector.
printf("%d\n", vector_inteiros[i]);
i++;
}



}

return 0;



}

Edited by pmg
GeSHi

Share this post


Link to post
Share on other sites
pmg

1) o prototipo da funcao strncmp() esta no header <string.h>. Faz o #include desse header!

2) a funcao strncmp() leva 3 argumentos: so escreveste 2.

3) a ultima vez do ciclo vai tentar chamar atoi(NULL).


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Fitorinaudo

Antes de mais. Podem-me dizer porque e que este codigo nao imprime 1 argumento e esse imprime? é que são iguais.

#include <stdio.h>
#include <stdlib.h>



int main (int argc, char *argv[]) {

int i;
int vector_inteiros[10];



for(i=0; i < argc; i++){

if(strncmp( argv[i+1],"a")==0)
{

int adiciona(int argc, char *argv[]);


printf("%d\n", vector_inteiros[i]);


}
return 0;
}

int adiciona (int argc, char *argv[]){


vector_inteiros[i] = atoi(argv[i+1]); 


}

}

O printf deste codigo é sempre 10. podem.me dizer pq sff?

Edited by pmg
GeSHi

Share this post


Link to post
Share on other sites
Fitorinaudo

nao compila? acabei de testar na linha de comandos e compila... estranho. eu meto qualquer numero e ele imprime sempre 10. podem-me ajudar a imprimir o que meto no input sff?

Share this post


Link to post
Share on other sites
pmg

Se o programa nao faz o que esperas, uma boa solucao para perceber a razao é usar o debugger.

Para a linha de comandos Linux, eu gosto do cgdb (um interface para o gdb).


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Share this post


Link to post
Share on other sites
Marzkor

tas a usar um text editor ? ou um IDE ? Se for um text editor vê la se fizeste ctrl + s (guardar) antes de compilar

Se o programa nao faz o que esperas, uma boa solucao para perceber a razao é usar o debugger.

Para a linha de comandos Linux, eu gosto do cgdb (um interface para o gdb).

gdb é pior que a idade da pedra. Aquilo para fazer alguma coisa leva anos. :D

Share this post


Link to post
Share on other sites
Fitorinaudo

claro que guardei.. que erro estupido. num código ele imprime o que eu meto como input tal e qual, noutro imprime sempre o mesmo numero independenetemente do input que der. da sempre: 134520832

Sabem porque? apenas chamei a funçao..

Share this post


Link to post
Share on other sites
HappyHippyHippo

claro que guardei.. que erro estupido. num código ele imprime o que eu meto como input tal e qual, noutro imprime sempre o mesmo numero independenetemente do input que der. da sempre: 134520832

Sabem porque? apenas chamei a funçao..

Meti duas pizzas no forno durante 20 minutos exactos. Não foram ao mesmo tempo, mas o forno manteve a mesma temperatura. As pizas estavam na mesma prateleira do forno, logo estiveram expostas exactamente à mesma quantidade e intensidade de calor.

A primeira até se comia, mas não é que a segunda estava intragável ?

sabes o que mudou ?

A primeira era uma pizza e a segunda era um sapato !!!

conclusão : como achas que será possível responder a um post destes sem dizeres o que escreveste na chamada da função ?!?!?

----

ps :

int adiciona (int argc, char *argv[]
{
 vector_inteiros[i] = atoi(argv[i+1]); 
 // isto é impossível compilar
 // a variável "vector_inteiros" não se encontra declarada dentro da função adiciona
 // e se pretendes usar a da função main, necessitas de a fornecer
}

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Fitorinaudo

int adiciona (int argc, char *argv[]); Ca em cima no Main.

Método ja ta assim e nada ainda: int adiciona (int argc, char *argv[])

{

int i;

int vector_inteiros[10];

vector_inteiros = atoi(argv);

}

Share this post


Link to post
Share on other sites
HappyHippyHippo

int adiciona (int argc, char *argv[]); Ca em cima no Main.

Método ja ta assim e nada ainda: int adiciona (int argc, char *argv[])

{

int i;

int vector_inteiros[10];

vector_inteiros = atoi(argv);

}

leste todos os comentários no código do meu post ? principalmente o último ?

o array que estás a usar na função existe somente na função.

no momento que a função termina, o array deixa de existir. não tem nada haver com o array existente na função main !!!


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
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

×

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.