有关如何打印给定开始和结束中的所有内容的帮助
首先这是main中的函数
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");
}
最佳答案
嗯,你必须研究 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语言中传递给函数的,指针只是一个整数,它保存我们创建的元素所在的地址。
关于c - 打印数据并给出开始和结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346514/