所以我一直在工作的一个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