【发布时间】:2014-01-18 13:41:20
【问题描述】:
我正在尝试在 for 循环中扫描用户输入,除了循环的第一次迭代之外,它需要 2 条数据才能继续下一步,我不明白为什么。我将在下面展示我的代码,但作为提醒,我对此真的很陌生而且不是很好,我什至不确定我使用的方法是否最有效。
#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]);可以解决问题。
-
是的,你是对的,我猜是我没有彻底检查旧帖子!
标签: c