0
我在使用scanf
時遇到了一些麻煩。我想讀的投入將是這種格式:使用scanf分隔冒號的問題
string:integer:
例如,ptest/src/test.c:19:blahblahblah
將是一個有效的字符串。我想存儲p2test/src/test.c
和19
。不過,我碰到的一些問題,即19
沒有得到在讀
這裏就是我想:
#include <stdio.h>
int main() {
char *str;
char *i;
int n = 0;
scanf("%m[^':'], %m[^':']", &str, &i);
printf("# inputs read: %d\n", n);
printf("%s\n", str);
printf("%s\n", i);
return 0;
}
最終,我得到了1個輸入閱讀與ptest/src/test.c
是打印。另一個問題是我使用的m
標誌從gcc獲取警告。我正在使用C89,並且在使用a
時也收到了相同的警告。
哦,我明白了。你介意在中間作品中如何用冒號代替逗號? – mrQWERTY 2015-02-07 21:44:54
你想告訴'scanf'你所期望的輸入字符串的格式。格式化字符串'「%m [^':']:%m [^':']」'可以理解爲:取一個除冒號('%m [^':']')存儲它,然後冒號(':'),然後再取另一個字符串,它包含冒號('%m [^':']'),並將其存儲。如果你把它保存爲''%m [^':'],%m [^':']「',那就意味着:找到一個字符串,然後找到一個逗號和一個空格,然後找到另一個字符串。 – jadhachem 2015-02-07 21:53:03