如何在给定的开始和结束时打印所有内容的帮助
首先这是主要的功能
for (i = 0; i < 30; i++) {
printf("%s\n", Codes[i]);
OneStock_ManyDailyData( DS, DS[i].Nametag, "10/2/2017", "11/6/2017" );
printf("\n\n");
}
这会调用函数
void OneStock_ManyDailyData(struct company DS[30], Symbol code, StrDate start, StrDate end) {
int i;
int c;
int x;
int y;
int a;
for(i=0; i<30; i++) {
//printf("Entered Loop\n");
if(strcmp(DS[i].Nametag, code) == 0) {
//printf("Gotcha!\n");
for(c=0; c<DS[i].ndd; c++){
//printf("Entered Second Loop\n");
}
}
getch();
}
为了获得开始和结束的范围,应该在第二个for循环中放入什么代码
这最后一部分显示可以插入for循环中,但它只显示1个开始或给定日期
if(strcmp(DS[i].Values[c].date, date)==0){
printf("%s \t%.2f \t%.2f \t%.2f \t%.2f \t%.0f\n", DS[i].Values[c].date, DS[i].Values[c].open, DS[i].Values[c].high, DS[i].Values[c].low, DS[i].Values[c].close, DS[i].Values[c].volume);
printf("\n");
}
答案 0 :(得分:0)
你必须在C.中学习并学习并学习一些教程。 在这里你写道:
void OneStock_ManyDailyData(struct company DS[30], Symbol code, StrDate start, StrDate end)
首先,你不能将数组作为C中的参数传递。你必须传递一个数组开头的指针。所以
void OneStock_ManyDailyData(struct company* ds, Symbol code, StrDate start, StrDate end)
我们在这里做的是为数组的第一个元素传递一个指针(这是我们在C中做的)
现在你需要迭代ds [30]。为此,我们需要对函数说出元素的数量,所以迭代知道在哪里停止。
我们还需要知道迭代步骤有多大,在这种情况下,通常我们可以通过sizeof(our_element)
找到它。
迭代是这样的:
void iterate_ds(struct company* ds , int elements , ... , ...)
{
int i;
for ( i = 0 , i < 30 , i ++)
{
do_what_you_want(ds[i]);
}
}
你没有向我提供结构的结构,所以我不能在do_what_you_want(ds[i]);
中说出你所拥有的内容。但是我认为你可以通过检查或其他方式进行另一次迭代像我们为ds数组那样传递参数。
我希望这会有所帮助:)
PS:指针是我们在C中传递函数的指针,指针只是一个整数,它保存了我们创建的元素所在的地址。