我的問題是如何將它們argv分成兩部分并將這些部分存盤在兩個變數中。
我希望我的程式獲取引數,然后是分隔符,然后是這樣的引數:
./program parameter1 parameter2 \: parameter3 parameter4
如您所見,轉義的 ' :' 將充當分隔符,將陣列分成兩部分。現在我想得到一個char *arr1[]which will hold parameter1andparameter2另一個char *arr2[]which will hold parameter3and parameter4。引數可以有不同的長度。
如何argv將各種引數一分為二char *[]?最后我想訪問(記住我的例子)arr1[0],它里面應該有字串parameter1,里面arr1[1]應該有字串parameter2。
編輯:問題在于將參??數保存到兩個不同的 char *arr[] 中。我不知道該怎么做,因為我只知道如何用一個值初始化一個陣列。
char *arr1[]; !error
char *arr1[10]; works, but what if I have more than 10 parameters?
提前致謝!
uj5u.com熱心網友回復:
不!這些都是指標。相反,使用指標——開始指標和結束指標或開始指標和元素計數——來表示源陣列內的“范圍”。
char **arr1 = &argv[1];
char **arr1end = arr1;
while (*arr1end != NULL) {
if (strcmp(*arr1end, ":") == 0) {
break;
}
arr1end ;
}
if (arr1end == NULL) { /* handle error - user did not give : argument */ }
size_t arr1cnt = arr1end - arr1;
// Array arr1 has arr1cnt elements.
char **arr2 = arr1end 1;
char **arr2end = arr2;
while (*arr2end != NULL) {
arr2end;
}
size_t arr2cnt = arr2end - arr2;
// arr2cnt represents arguments after `:`.
for (size_t i = 0; i < arr1cnt; i) {
printf("arr1[%zu]=%s\n", i, arr1[i]);
}
for (size_t i = 0; i < arr2cnt; i) {
printf("arr2[%zu]=%s\n", i, arr2[i]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/477285.html
下一篇:將字串轉換為顫動中的日期串列
