2012-10-19 99 views
1

我所試圖做的就是添加一個命令行參數轉換爲一個數組作爲indvidual字符。 因此,當用戶運行該程序./program bacon「臘肉」被存儲在一個數組添加命令行字符串數組是不同的字符

array k[]= {'b', 'a', 'c', 'o', 'n'}; 

我希望我解釋的不夠好我是新來編程。

+0

顯示您的代碼。 – Musa

回答

0

所以,我知道你是編程新手,但肯定這看起來很熟悉,不是嗎?

int main (int argc, char **argv) { 
    // ... 
} 

char **argv是一個指向字符指針,但是你的目的,你可以認爲這是char *argv[]相當。所不同的是微妙的,但值得一提的,因爲這需要注意的是要了解字符串C. char *argv[]的工作是顯式類型爲char指針數組的方式是至關重要的,而char **argv可能是一個數組,但你不會知道,直到你嘗試像這樣訪問它。鑑於這是您的主要功能,可以認爲這將始終適當地實例化。

無論如何,移動過去的切線,我們有我們的主要功能null結尾的字符串的char **argv陣列。從你的問題,我可以看到一條我們應該遵循的簡單路徑。我會假定只有一個參數是可以預料的(否則你應該能夠執行處理不同情況的案例)。

  1. 獲取傳遞給我們程序的第一個參數(argv[1])的長度。
  2. argv[1]中的字符填充數組。
  3. 打印出我們的數組,以便我們知道它的工作原理。

在我們main功能,我們的argv[1]長度存儲n,並宣佈我們的規模n的陣列。然後,我們遍歷第一個字符串,逐個字符,並將每個字符存儲到我們數組的下一個打開的插槽中。最後,我們重複我們的循環並打印出我們陣列中的每一項,以便我們驗證它的工作原理。

int main (int argc, char *argv[]) { 
    int n = strlen(argv[1]); 
    char arr[n]; 

    int i; 
    for (i = 0; i < n; i++) 
    arr[i] = argv[1][i]; 

    for (i = 0; i < n; i++) 
    printf("%c ", arr[i]); 

    printf("\n"); 
} 

希望這會有所幫助。乾杯。

+0

謝謝,這幫助我瞭解到底發生了什麼,我得到了它的工作! – Yamaha32088

1

實際上,「培根」將通過argv的1這是一個char *被傳遞到你和一個空結束的字符串。現在你想創建的數組也應該是一個char數組。

按道理你應該只被複製到新陣列輸入(argv的1)。

您可以使用字符串操作功能,如strcpystrncpy

注:我並沒有直接添加代碼在這個解決方案,這將是更好地爲你自己嘗試一下。