字符字符串数组的初始值设定项中出现问题

Issue in initializer for char string array

本文关键字:问题 数组 字符串 字符      更新时间:2023-10-16

我是一个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

我有没有遗漏一些基本的东西?

这正是它所通知的:您的字符串太长,无法放入您的char数组,因此您的编译器会告诉您它将不再继续。

你可以通过增强阵列的大小来实现它,如下所示:

char ns[ ][30] = //... ;

这里的30只是用来表示最大的字符串;它需要具有预定义的最大字符串+1的大小(这样就可以添加空终止字符)。例如,如果最大的字符串是"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");
}

[3]表示每个字符串最多只能包含3个字符。由于一必须是空终止符,所以它实际上意味着两个。你的绳子比那个长得多。选择一个足够大的数字来容纳所有这些数字。

ETA:@JLF:你是我失散多年的兄弟吗?:)