#include <stdlib.h>
#include <stdio.h>
struct a
{
    a * next;
    double v;
};
void add(struct a* list,double d)
{
    if(!list->next) goto exception; //I know that a lot of programmers have a low opinion about "goto"
    list=list->next;
    list->v=d;
    return;
exception:
    printf("Cannot add a new element to the list\n");
}
int main()
{
    struct a l;
    double j;
    int i;
    for(j=1.0; j<10.0; j+=1.0)
    {   
        l.next= (a*)malloc(sizeof(a));
        add(&l,j);
        printf("%lf ",l.v);
    }
    return 0;
}
This program compiles , but there is a mess in the output:
-92559631349317831000000000000000000000000000000000000000000000.000000 -92559631 349317831000000000000000000000000000000000000000000000.000000 -92559631349317831 000000000000000000000000000000000000000000000.000000 -92559631349317831000000000 000000000000000000000000000000000000.000000 -92559631349317831000000000000000000 000000000000000000000000000.000000 -92559631349317831000000000000000000000000000 000000000000000000.000000 -92559631349317831000000000000000000000000000000000000 000000000.000000 -92559631349317831000000000000000000000000000000000000000000000 .000000 -92559631349317831000000000000000000000000000000000000000000000.000000
Whereas desired is:
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
Where is the mistake and how to fix it?
 
     
    