Ir para o conteúdo
Fitorinaudo

Duvida em C

Mensagens Recomendadas

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;



}

Editado por pmg
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Editado por pmg
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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
}

Editado por HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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);

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.