Qualcuno mi aiuti per piacere
L'output di questo programma non mi convince... Il do/while non mi da il risultato che credevo mi dovesse dare: cioè subito dopo "Inserire il carattere di End of File per terminare, altrimenti premere Invio:" mi esce scritto anche
"Inserire operatore aritmetico: " (cosa che non dovrebbe succedere, in quanto deve permettere la chiusura della lista) e non riesco a capire il motivo.
Come dovrei fare per eliminare questo problema?!?
Codice PHP:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
typedef struct arithmetic_op{
char operation[0];
int num_of_op;
double operands[SIZE];
struct arithmetic_op *next;
}arithmetic_op;
void struct_data_storage(arithmetic_op *nptr);
int main()
{
arithmetic_op *head=NULL;
struct_data_storage(head);
system ("pause");
return 0;
}
void struct_data_storage(arithmetic_op *nptr)
{
int n=0, a;
nptr=(arithmetic_op*)malloc(sizeof(arithmetic_op));
if(nptr!=NULL){
do
{
printf("Inserire operatore aritmetico: ");
scanf("%c", &nptr->operation);
printf("Inserire il numero di operandi: ");
scanf("%d", &nptr->num_of_op);
while(n!=nptr->num_of_op){
printf("Inserire gli operatori: ");
scanf("%f", &nptr->operands);
n++;
}
printf("\n");
n=0;
printf("Inserire il carattere di End of File per terminare,\n"
"altrimenti premere Invio: ");
} while(a=getchar()!=EOF);
}
else {
printf("Memoria non sufficiente\n");
}
nptr->next=NULL;
free(nptr);
return;
}
P.s.: Il programma non è ancora finito, ma è solo un abbozzo.