2013-05-18 20 views
2

我想操作數組,但是我有點困惑,我需要做。我想要做的事情如下:在C++中使用Arduino上的數組

char myArray[10]; 

myArray[0] = 0xA9; 
myArray[1] = 'D'; 
myArray[2] = 'S'; 
myArray[3] = "qwert"; 
myArray[9] = 'C'; 
myArray[10] = '\0'; 

String fullArray = String(myArray); 

當然,這不起作用,但我想這樣的事情,如果可能的話操縱其中一個數組。那可能嗎?

我試過了,但是我不能一次輸出整個字符串。

char* myStrings[] = 
    {"This is string 1", 
    "This is string 2", 
    "This is string 3", 
    "This is string 4", 
    "This is string 5", 
    "This is string 6"}; 

void setup(){ 
    Serial.begin(9600); 
} 

void loop(){ 
    for (int i = 0; i < 6; i++){ 
     Serial.println(myStrings[i]); 
     delay(500); 
    } 
} 
+0

Arduino語言是如此之低的水平,有沒有理由,你應該想這樣做的。一個數組定義了一個映射到一個相同類型和大小的變量序列,從而可以立即訪問它們中的任何一個。你不能有不同大小的數組元素。 – Greg

+0

如果你真的很絕望,你可以去分配堆內存中的所有元素,併爲它們指定一個'void *'指針數組,並試着弄清楚什麼是哪種類型和多大,但我不會想' t建議。 – Greg

+4

@PartiallyFinite沒有「Arduino語言」這樣的東西。有彙編器,C和C++,其中Arduino中的AVR被編程,並且有Arduino庫提供C函數和C++類來與設備一起工作。 – 2013-05-18 13:00:19

回答

0

您的問題是,因爲要定義字符數組,不陣列字符(即字符串)的的陣列。

但是:

不要使用char*。使用String。操作起來要容易得多,而且您不必擔心指針/原始值。

例如爲:

String myStrings[3] = {"a", "b", "c"}; 

for (int i = 0; i < 3; i++) { 
    Serial.print(myStrings[i]); 
} 

輸出:

abc 
+0

從這個問題來看,他還想簡單地連接數組中的所有字符串以獲得一個大的字符串。 – Greg

+0

如果我做了println,我會得到:'a \ n''b \ n''c \ n'。我想'abc' – mafap

+1

@mafap println是「打印行」的簡稱。如果您不想追加新的行字符,您想使用「打印」。 – Kitsune