Erro no código - C

1. Erro no código - C

Gabriel Oliveira da Silva
Gabrielz

(usa Arch Linux)

Enviado em 09/05/2015 - 19:14h

Vou te ajudar no seu caminho em programação!
Você vai me ajudar!
Todos vão sair beneficiados!

Rimou? Não :/

Ok, chega de papo. Olhem meu código:

#include <stdio.h>

int main(void){
int quantidade = 0;
int espacos[quantidade];
printf("Digite a quantidade de espaços: ");
scanf("%d", &quantidade);

for(int i = 0; i <= quantidade; i++){
printf("Digite o valor do espaço %d:", i);
scanf("%d", &espacos[i]);
}

printf("Os resultados são:\n");
for(int i = 0; i <= quantidade; i++){
printf("%d\n", &espacos[i]);
}

return 0;
}


O que tem de errado nele? Toda vez que o compilo, sempre aparece o seguinte erro:
pitagoras.c: In function ‘int main()’:
pitagoras.c:16:29: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int*’ [-Wformat=]
printf("%d\n", &espacos[i]);
^



  


2. Re: Erro no código - C

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 09/05/2015 - 19:17h

Amigo, uma matriz não precisa do operador '&'

Só fazer : printf("%d",matriz[i]);

Espero ter ajudado

[]'s

T+

--

C ou Não C ?
Eis a questão...


3. Re: Erro no código - C

Gabriel Oliveira da Silva
Gabrielz

(usa Arch Linux)

Enviado em 09/05/2015 - 20:17h


PORCARIA! Esqueci que coloquei o & no printf, kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk.
Compilei, tudo certinho, mas...
Olha a saída do programa durante meus testes:

Digite a quantidade de espaços: 6
Digite o valor do espaço 0:1
Digite o valor do espaço 1:2
Digite o valor do espaço 2:8
Digite o valor do espaço 3:2
Digite o valor do espaço 4:1
Digite o valor do espaço 5:8
Digite o valor do espaço 6:77
Os resultados são:
1
2
8
2
1
8
78
7
-1



4. Re: Erro no código - C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 09/05/2015 - 21:18h

Gabrielz wrote:

#include <stdio.h>

int main(void){
int quantidade = 0;
int espacos[quantidade];


Você declarou um array com zero elementos. Duvido que fosse isso o que você queria fazer.

No ANSI-C e no C++ não é permitido, por padrão, declarar arrays com tamanho variável. Se você estiver usando C99 ou C11, pode até usar esse tipo de construção, mas provavelmente você só vai querer colocá-lo depois de ter lido o valor de quantidade e verificado que é um valor que faça sentido (i.e. positivo e não absurdamente grande).

	printf("Digite a quantidade de espaços: ");
scanf("%d", &quantidade);

for(int i = 0; i <= quantidade; i++){


Problema: se você declara um array com N elementos, os índices desse array devem variar de 0 a N-1. Do jeito como você fez, a última interação do laço de repetição extrapola uma posição depois do fim do tamanho declarado para o array. Provavelmente você se confundiu ao usar “<=”, quando deveria ter usado “<”.

		printf("Digite o valor do espaço %d:", i);
scanf("%d", &espacos[i]);
}

printf("Os resultados são:\n");
for(int i = 0; i <= quantidade; i++){


Mesmo erro de laço de repetição que vai além de onde deveria.

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


Não deveria ter usado o operador & aqui (mas isso já lhe foi dito pelo Thihup).

	}

return 0;
}











Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts