所以我一直在工作的一個C++項目和IM停留在這個問題上,基本上林做節目,用戶可以輸入自己的名字,我以後再打印出來的文件時,用戶的名字和姓氏用逗號分開,但逗號周圍的可選空白是允許的。這就是我一直在使用的讀取用戶名:讀可選白色空間(
char lastName[20];
char firstName[20];
char line[LINESIZE];
while(fgets(line,LINESIZE,stdin)) {
if((sscanf(line," %s , %s ",lastName,firstName)) == 2) {
/*process name */
}
}
然而,它讀取輸入成功是唯一的一次,當用戶輸入:
john , doe
其中%S,%S匹配我有,我怎麼能使它像這樣:
john, doe
john ,doe
都可以工作?
我也曾嘗試
sscanf(line,"%s%[],%[]%s");
這不導致編譯錯誤,但它不處理輸入意味着它不匹配%S,%S
你會發現這樣更容易完成使用'strtok'。 – zwol
@zwol:'sscanf'和朋友有很多quirls的,'strtok'在其自己的方式打破...只是解析手串。 – chqrlie