[英]use of strsep in C while parsing argv Variable doesen't work
我在解析argv變量時遇到了C問題。 這是任務:
我從命令行將一些參數輸入到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
我的編譯器是:在MacOS上使用XCode作為IDE的gcc
你知道sscanf嗎? 看一下:
unsigned a,b;
if( 2==sscanf(argv[i],"-r=%u-%u",&a,&b) )
printf("%u-%u",a,b);
這是將字符串傳遞給strsep()
switch (argv[i][1]) {
char *s;
int x, y;
case 'r':
s = argv[i] + 3;
x = atoi(strsep(&s, "-"));
y = atoi(strsep(&s, "-"));
printf("x=%d, y=%d\n", x, y);
break;
}
將產生:
x=3, y=4
不要按原樣使用它。 您將必須根據情況適當地對x
和y
進行其他NULL
檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.