Enviado em 02/05/2018 - 21:13h
Desculpem por não ser muito especifico no titulo da pergunta, mas é que eu não conseguir entender oque está acontecendo no meu código e na verdade nem sei se o problema é com a função realloc.
#include <stdio.h>
#include <stdlib.h>
void add(unsigned int *size, unsigned int aux, double *ptr);
int main(void){
double *numbers=(double*)malloc(sizeof(double));
char opc;
unsigned int size=0, aux;
do{
printf("Inserir numeros...[1]\n");
printf("Exibir numeros....[2]\n");
printf("Limpar............[3]\n");
printf("Sair..............[4]\n->");
opc=getchar();
system("clear");
__fpurge(stdin);
switch(opc){
case '1':
printf("Digite a quantidade de numeros a serem inseridos ->");
scanf("%d", &aux);
system("clear");
__fpurge(stdin);
add(&size, aux, numbers);
break;
case '2':
for(unsigned int i=0; i<size; i++){
printf("%lf\n", numbers[i]);
}
printf("\n\n\n");
break;
case '3':
numbers=(double*)realloc(numbers, sizeof(double));
size=0;
printf("Valores removidos!\n\n");
break;
case '4':
break;
default:
printf("Opção incorreta\n\n");
}
}while(opc!='4');
free(numbers);
numbers=NULL;
}
void add(unsigned int *size, unsigned int aux, double *ptr){
double *ptr_aux=(double*)realloc(ptr, (*size+aux)*sizeof(double));
if(ptr_aux==NULL){
printf("Memoria insuficiente\n\n");
}else{
ptr=ptr_aux;
(*size)+=aux;
unsigned int i;
char opc;
for(i=(*size)-aux; i<(*size); i++){
printf("%d - Digite qualquer valor numerico ->", i+1);
scanf("%lf", &ptr[i]);
if(i+1==(*size)){
system("clear");
__fpurge(stdin);
printf("\n\nDeseja inserir mais numeros?\n[y/n] -> ");
opc=getchar();
__fpurge(stdin);
if(opc=='Y' || opc=='y'){
printf("\nInsira a quantidade de numeros -> ");
scanf("%d", &aux);
(*size)+=aux;
system("clear");
}
}
}
system("clear");
__fpurge(stdin);
}
}
Inserir numeros...[1]
Exibir numeros....[2]
Limpar............[3]
Sair..............[4]
->1
--------------------
Digite a quantidade de numeros a serem inseridos ->1
1 - Digite qualquer valor numerico ->666
-------------------
Deseja inserir mais numeros?
[y/n] -> n
Inserir numeros...[1]
Exibir numeros....[2]
Limpar............[3]
Sair..............[4]
->2
//Ele exibira normalmente o valor 666
-------------------
Inserir numeros...[1]
Exibir numeros....[2]
Limpar............[3]
Sair..............[4]
->2
*---------saida---------*
0.000000
0.000000
0.000000
0.000000
//WTF???
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Interface gráfica não funciona (3)
Programa duplicado no "Abrir com" e na barra de pesquisa do ... (2)