字符串格式的描述不是很清楚,但我想我还是可以回答你的问题(用字母提取整数并将(?)它们添加到正确的 int 变量中)。
所以从这个字符串开始:
char* 是 = "3e,6s,1d,3g,22r,7c"; // 是 == 奇怪的字符串
使用strtok标记它可能是最简单的。
char* token = strtok (was,",");
while (token != NULL) {
assign(token); // first token is 3e, second 6s etc...
token = strtok (NULL, ",");
}
现在您可以使用sscanf查找数字和字母。
void assign(char* token) {
char letter;
int number;
if (0 != sscanf(token, "%d%c", number, letter)) {
// the first token produces letter 'e' and number '3'
// now you can switch on letter and add number
// to the proper variable in each case
} else {
//matching failure!!
}
}
关于字符串格式的其他怪癖(单独的容器和末尾的浮动(其他??)),您可以以类似的方式处理这些问题。就像剥洋葱一样,逐层处理格式,直到得到字母数字组合。
此外,在调用 sscanf 时,至少会捕获任何格式错误。