我試圖掃描for循環中的用戶輸入,除了循環的第一次迭代之外,需要2段數據才能繼續下一步,而且我不理解爲什麼。我會在下面顯示我的代碼,但作爲一個頭,我真的很新,並不是很好,我甚至不確定我使用的方法是否最有效。從for循環中的用戶輸入掃描
#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]);
}
}
}
所以,是主要的問題是服用的值用於塊1的速度時它需要兩個值
scanf(「%lf%* c」,&v [temp]);可能解決問題。 – Dipto
是的你是正確的,我的不好,我猜測不徹底檢查舊帖子! – Carterini