1 – 12 de 12
Blogger Unknown disse...

Cara você utiliza o gcc como compilador ? Pois pelo que eu saiba o gets não pertence mais a biblioteca padrão e deve se utilizar fgets em vez do gets. Pelo menos é o que vi em alguns sites, como esses:
http://gcc.gnu.org/ml/gcc-help/1999-10n/msg00077.html

3 de junho de 2013 às 20:59

Anônimo Apostila C Progressivo disse...

Olá Unknown,

Cara, essas coisas de 'função perigosa', 'não indicada', 'uso errado', 'uso não recomendado' etc, é complicado.

Se formos ser rigorosos, vamos acabar programando da maneira como se programa em C pro Kernel do Linux, ou seja, de uma maneira bem otimizada e altamente rígida.

Nosso objetivo aqui no curso é ensinar iniciantes, para quem está começando mesmo a aprender.
Creio que se formos ensinar todos esses detalhes e pormenores, vai acabar ficando complicado e desestimulante.

Mas informação nunca é demais, por isso agradecemos e vamos deixar seu comentário aí.
Sinta-se a vontade para nos dar outras dicas como esse e sua opinião.

4 de junho de 2013 às 03:36

Blogger Nick Arcos disse...

Amigo o código:

void transfereTempPos( Pilha **pPos, Pilha **pTemp, Pilha *aux )
aux = (*(*pTemp)).prox; //(*p).x = 7.0; ou p->x = 7.0;
(*(*pTemp)).prox = *pPos;
*pPos = *pTemp;
*pTemp = aux;


Poderia me explicar o uso de dois asterisco **pPos e (*(pTemp)).prox = *Pos?

Ta meio obscuro isso para mim ainda.

Obrigado

10 de agosto de 2013 às 06:19

Anônimo Anônimo disse...

Olá,

Muito bom sua apostila. Observei ali que uma função recebe por referencia uma estrutura. Como seria se esta função recebesse por referencia uma estrutura vetor ?

forte a todos.
obrigado.

17 de setembro de 2013 às 08:49

Anônimo Apostila C Progressivo disse...

Olá Anônimo,

O que você quer dizer com 'estrutura vetor' ? Não entendi bem.

17 de setembro de 2013 às 20:44

Blogger lixo virtual disse...

eu nao entendi bem porque usar
&(*car).anoFabricacao, tipo, o asterisco serve pra dizer que queremos o valor, e o "&", pra dizer que queremos o endereço, entao oque voce fez foi pegar o valor do ponteiro car, e depois pegar o endereço do valor do ponteiro. Nao da pra simplesmente colocar car.anoFabricacao, sem o "&" nem o "*"?

7 de dezembro de 2013 às 04:57

Blogger Unknown disse...

lixo virtual,

Ao usar (*car).anoFabricacao na função printf("Ano de Fabricaco: %d, (*car).anoFabricacao); , estamos mostrando o valor do campo anoFabricacao da struct CARRO.

Usando &(*car).anoFabricacao na funcao scanf("%d",&(*car).anoFabricacao); , estamos armazenando um valor que o usuário informou no campo anoFabricaco da struct CARRO.

Não sei se ficou claro, mas é isso.

16 de janeiro de 2014 às 13:17

Blogger Guilherme0890 disse...

Tambem estou com a duvida de um amigo acima que não foi respondido porque sua pergunta não foi entendida, mas é o seguinte, no caso do exemplo de criação de carro temos a struct:
typedef struct
{
char modelo[30];
int ano, poras;
}CARRO;
daí se o enunciado pedisse pra cadastrar mais de um carro
CARRO cars[3];
quando eu fosse preencher o modelo do primeiro carro por exemplo na função, como ficaria?
Eu tentei
fgets(cars[cont]->modelo,30,stdin);
porem deu errado,
mudei pra "gets" e tambem deu errado
apresentando o erro "invalid type argument '->'".

Como seria a forma correta?

10 de maio de 2015 às 19:13

Blogger Ulisses disse...

Guilherme0890, nessa situação como se trata de um vetor ele próprio já é passado por referência, daí não precisa usar "*" nem "->" para alterar o valor do campo no array. A passagem para a função é feita de forma direta, apenas colocando o tamanho do array.
Ex:void ler(carro novo[2]){
int cont;
for(cont=0;cont<MAX;cont++){
fflush(stdin);
printf("\nDigite os dados do veiculo %d\n",cont+1);
printf("Digite o modelo do carro: ");
gets(novo[cont].modelo);
printf("Digite a cor do carro: ");
gets(novo[cont].cor);
....
dentro da main
... ler(novo);

19 de setembro de 2016 às 00:08

Blogger Rayller disse...

Por favor, alguem me de uma ajuda de como passar por referencia VETORES de STRUCT. Não estou conseguindo de jeito nenhum.

17 de agosto de 2017 às 09:50

Anônimo Anônimo disse...

Autor, então como devo prosseguir com alocação dinamica? Veja:

CARRO *fusca = (CARRO*)calloc(10, sizeof(CARRO));

strcpy( (*fusca[2]).modelo , "Gol" );

Esse formato não deveria funcionar também de acordo com o texto?

10 de agosto de 2019 às 16:10

Blogger Wesley disse...

E seu eu passar um vetor do tipo 'carro'como argumento para uma função? Como ficaria? Por exemplo:
CARRO car[5];
Como passaria isso como argumento? E como a função seria declarada de modo a receber?

5 de maio de 2021 às 07:12

É quase impossível criar centenas de páginas voltadas para programação C e não cometer algum erro.

- Se notar algum conceito, letra ou trecho de código errado, deixe sua correção

- Se perceber uma maneira melhor ou mais eficiente de fazer algo, deixe sua ideia

- Se algo não ficar claro ou for confuso, nos avise

Aos poucos vamos aumentando e melhorando a qualidade de nosso material, e para isso contamos com sua ajuda.
Você pode usar algumas tags HTML, como <b>, <i>, <a>

A moderação de comentários foi ativada. Todos os comentários devem ser aprovados pelo autor do blog.

Depois de enviar seu comentário, será necessário fazer login.
Prove que você não é um robô