使用开始和结束打印数据

时间:2017-11-17 08:46:55

标签: c arrays

如何在给定的开始和结束时打印所有内容的帮助

首先这是主要的功能

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");
}

1 个答案:

答案 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中传递函数的指针,指针只是一个整数,它保存了我们创建的元素所在的地址。