argv 変数の解析中に C で問題が発生しました。これがタスクです:
コマンドラインからCプログラムにいくつかのパラメーターを取得しました。そのうちの 1 つは "-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」を持っています。しかし、2 つの異なる変数にも 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 を互換性のないポインター型から渡しています
私のコンパイラは次のとおりです。IDEとしてXCodeを使用するMacOS上のgcc