无法弄清楚如何格式化数组中的字符串 (C)——对 comp sci 来说非常新

Cannot figure out how to format strings in an array (C) – very new to comp sci

我在这里查看了很多问题,但我不熟悉语法。我正在尝试用 C 编写一个程序,给出作曲家的名字,将为您提供作曲家在管弦乐中使用的乐器。我想弄清楚如何格式化数组中的字符串,但编译器无法识别它们。我试过使用一个变量,但没有成功。现在,对于 j[0]、j[1]、j[2] 中每个索引作曲家的名字,只有编译器的错误是“未声明的标识符”。到目前为止我有:

#include <stdio.h>
#include <cs50.h>

int main(void)
{
    printf("Henlo, (')> I will determine your average orchestral instrumentation per composer.\n");
    printf("Your options are: JS_Bach, Mozart, Beethoven, Brahms, Wagner, R_Strauss, Ravel, and Debussy.\n");

    string i = get_string("Composer: "); //get_string (from <cs50.h> prompts the user to enter text

    string j[8];
        j[0] = JS_Bach; //undeclared identifiers for j[0] thru j[7]
        j[1] = Mozart;
        j[2] = Beethoven;
        j[3] = Brahms;
        j[4] = Wagner;
        j[5] = R_Strauss;
        j[7] = Ravel;
        j[7] = Debussy;

    if (i == j[0])
    {
        printf("2fl, 2-3ob, maybe d'amore/da caccia, 3trp, timp, vln.I, vln.II, vla, SATB choir + solo, bc\n");
    }
    else if (i == j[1])
    {
        printf("1-2fl, 2ob, maybe 2cl/basset 2bsn, 2hrn, 2trp, timp, vln.I, vln.II, vla, vlc, cb\n");

//same format with different text in printf for j[2] thru j[7], (won't waste space here with the rest)

我也看到过关于使用 char** 的代码的问题,诸如此类;有人可以解释星号的目的吗?我是否需要将项目声明为 char 而不是 string?类型 string<cs50.h> 定义。不确定我是否需要另一个函数库来使用数组中的字符串?

您将名称称为标识符,而不是您希望的常量。例如,将 Wagner 更改为 "Wagner"。您收到错误消息是因为这些标识符在您使用之前从未定义过。

此外,现在当您比较字符串时,您是在比较它们在内存中的地址。如果要比较字符串而不是地址,请考虑使用 strcmp