解析argv變量時,我在C語言中遇到問題。這是任務:在解析argv時使用C語言中的strsep變量doesen't無法工作
我有一些參數形成命令行到我的C程序。其中一個看起來像「-r = 20-5」。在那裏我必須找到「r」。這適用於:
if (argv[i][0] != 0 && argv[i][1] != 0 && argv[i][2] != 0 &&
argv[i][0] == '-' && argv[i][2] == '=') { /* Check the Variables */
switch (argv[i][1]) {
case 'r':
/* what have to be here? */
break;
}
現在我有「r」。但我也需要20和5兩個不同的變量。這是我想說的,但它沒有工作。我嘗試一些與
strsep(argv[i]+3, "-");
但我的編譯器(Xcode中)拋出一個警告(警告:傳遞從兼容的指針類型「strsep」的參數1)
有沒有人有任何想法(或鏈接)如何我可以解決問題嗎?
後它的解決仍然有一個警告,所以我得到的回答後我整個新代碼:
int parse(int argc, const char *argv[]) {
int i, x, y;
int intTmp;
long longTmp;
char *strTmp;
char *end;
for (i = 1; i < argc; i++) {
/* check for (-?=) */
if (argv[i][0] != 0 && argv[i][1] != 0 && argv[i][2] != 0 &&
argv[i][0] == '-' && argv[i][2] == '=') {
/* IGNORE THIS
* longTmp = strtol(argv[i]+3, &end, 10);
* intTmp = analyseEndptr(longTmp, argv[i]+3, end);
*/
switch (argv[i][1]) {
case 'r':
strTmp = argv[i]+3; /* <= Here I got the warning */
x = atoi(strsep(&strTmp, "-"));
y = atoi(strsep(&strTmp, "-"));
printf("x=%d, y=%d\n", x, y);
break;
}
}
}
}
的警告是:警告:傳遞「strsep」的參數1從兼容的指針類型
我的編譯器:使用了Xcode作爲IDE
'strsep'需要'字符**'作爲第一個參數,而不是一個'的char *' –
或者你可以寫自己的解析器。這需要一些時間,但它會按你的意願工作。你所需要做的只是遍歷字符串。作爲分隔符,您可以使用' - '符號。 – besworland
@Paul R如何從char *中獲取char **? (我很快google,但沒有好的結果) – waXve