我是一个Arduino noob,试图从这个数组中选择一个随机名称:
char ns[ ][3] = {"Carlos Alberto Castronovo","Tom Erbaugh","Caterina De Giacco","Di Puglia Pugliese Filomena","Manishwar Dhillon","Mel Richards","Connie Hvidtfeldt","Amy Namehere","Tim Beck","Sanil Sethi","Christophe Lavault","Steven Grimes","Jessica Serra","Mariateresa Petrucci","Patricia Anderson","Felma Roberto Cinco","Mai Ahmed","Tobe Levy","Indah Suspriati Wibawa","Dain Turgeon Orbe","Li Wang","Ed Clark","Elodie da Silva","Jason Garcia","Allan Litswa","Pietro Zubani","Cyril Jeanpierre","Kate Denali Princess","Maria Pilar Gl","Jefferson Ricarte","Adam Reed","László Lipták","Thalia Dbl","Maria Jose Calle Salas","William Alexander","Nicole Richardson","Andrea Hescher","Ismail Sholeh","Simone Spacci","Jason Jankow"};
但我收到此错误,我不确定不同的数据类型以及如何修复此数组:
error: initializer-string for array of chars is too long
我遗失了一些基本的东西吗?
答案 0 :(得分:4)
它正是它所告知的:你的字符串太长而不适合你的char数组,所以你的编译器告诉你它不会继续进行。
你可以通过增强数组的大小来实现它的工作:
char ns[ ][30] = //... ;
这里的30
只是代表你最大的字符串;它需要具有最大预定义字符串+ 1(so that the null terminating character \0
can be added)的大小。例如,如果您的最大字符串为"apple"
,则您的数组必须至少为6
长度。
您可以通过执行此操作来迭代这些字符串,例如:
int array_items = sizeof(ns) / sizeof(*ns); // this will gives you the amount of items stored in your array
int i;
int j;
for (i = 0; i < array_items; ++i) {
size_t strSize = strlen(ns[i]); // strSize now contains, if ns[i] contained the example of apple, 5
for (j = 0; j < strSize; ++j) {
printf("%c", ns[i][j]);
}
printf("\n");
}
答案 1 :(得分:1)
表示[3]表示每个字符串最多限制为3个字符。因为一个必须是空终止符,它实际上意味着两个。你的字符串比这长很多。选择一个足以容纳所有数字的数字。
ETA:@JLF:你是我失散多年的兄弟吗? :)