如何显示数组的内容并提示用户进行选择{C}

时间:2016-10-15 23:09:35

标签: c arrays structure prompt

该程序的主要目标是显示数组中名为" channels"但我似乎无法展示任何东西。显示后,我需要提示用户选择四个频道中的一个并显示所选的频道"的值。这就是我到目前为止所拥有的。我也不能使用任何循环。请帮忙。

#include <stdio.h>

//我使用结构来存储数组中的所有值

typedef struct

{
   char* name;
   double n; //roughness
   double slope;
   double width;
   double depth;

} CHANNEL;


main ()
{

    CHANNEL channels [4] = {
    {"Channel1", 0.035, 0.0001, 10.0, 2.0},
    {"Channel2", 0.020, 0.0002, 8.0, 1.0},
    {"Channel3", 0.015, 0.0010, 20.0, 1.5},
    {"Channel4", 0.030, 0.0007, 24.0, 3.0}
    };

//我想在这里显示所有频道及其值...我知道我必须使用printf但是我需要使用指针吗?

    printf("Please note:\n 0 = Channel 1 \n 1 = Channel 2 \n 2 = Channel 3 \n 3 = Channel 4);

//此部分仅适用于所选频道

    printf(Pick a channel from 0-3\n");
    int c = 0;
    scanf("%i", &c);
    CHANNEL chosen = channels [c];

}

2 个答案:

答案 0 :(得分:0)

问题可能是你在char的位置有一个字符串,一个简单的解决方案就是将结构改为:

typedef struct{
char* name;
double n;
double slope;
double depth;
} CHANNEL;

答案 1 :(得分:0)

首先,进行Daniel Litvak建议的修改。然后,要从用户那里获取信息,您应该执行以下操作:

int main(void) {

    // ...
    printf("Pick a channel from 0-3\n");
    int c = 0;
    scanf("%i ", &c);

    CHANNEL chosen = channels[c];

    printf ("The channel chosen is %s, n = %f, slope = %f and the depth = %f", chosen.name, chosen.n, chosen.slope, chosen.depth);
}

这将提示用户输入表示数组中通道索引的索引。如果愿意,您也可以先打印出所有频道选择。

出于演示目的,我将所选频道留在变量chosen中,您可以按照自己的意愿继续操作。

编辑:未进行错误检查以确保c在范围内。这是为了避免显示任何额外的,令人困惑的代码。