无法弄清楚如何格式化数组中的字符串 (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
。
我在这里查看了很多问题,但我不熟悉语法。我正在尝试用 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
。