I'm trying to scan user input in a for loop except for the first iteration of the loop 2 pieces of data are required for it to continue to the next step and I don't understand why. I'll show my code below but as a heads up I'm really new to this and not very good, I'm not even sure if the method i'm using is the most efficient.
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define w 1.0
#define R 1.0
int main(int argc, char *argv[])
{
int tmp;
double *x, *v, *m, *k;
x = malloc((argc-1)*sizeof(double));
v = malloc((argc-1)*sizeof(double));
m = malloc((argc-1)*sizeof(double));
k = malloc((argc-1)*sizeof(double));
if(x != NULL)
{
for(tmp=0; tmp<argc-1; tmp++)
{
sscanf(argv[tmp+1], "%lf", &x[tmp]);
}
}
else
{
printf("**************************\n");
printf("**Error allocating array**\n");
printf("**************************\n");
}
if(argc <= 2)
{
printf("************************************\n");
printf("**There must be at least 2 masses!**\n");
printf("************************************\n");
}
else if(argc == 3)
{
for(tmp=0; tmp<argc-1; tmp++)
{
printf("Input a value for the velocity of Block %d\n", tmp+1);
scanf("%lf\n", &v[tmp]);
}
for(tmp=0; tmp<argc-1; tmp++)
{
printf("Input a value for the mass of Block %d\n", tmp+1);
scanf("%lf\n", &m[tmp]);
}
for(tmp=0; tmp<argc-1; tmp++)
{
printf("Input a value for the spring constant of Spring %d\n", tmp+1);
scanf("%lf\n", &k[tmp]);
}
}
else
{
for(tmp=0; tmp<argc-1; tmp++)
{
printf("Input a value for the velocity of Mass %d\n", tmp+1);
scanf("%lf\n", &v[tmp]);
}
printf("Input a value for the mass of each Block\n");
for(tmp=0; tmp<argc-1; tmp++)
{
scanf("%lf\n", &m[tmp]);
}
printf("Input a value for the spring constant of each Spring\n");
for(tmp=0; tmp<argc-1; tmp++)
{
scanf("%lf\n", &k[tmp]);
printf("%lf\n", &k[tmp]);
}
}
}
So yes the main problem is when taking a value for the velocity of block 1 it requires two values