我正在尝试使用以下格式[A-Z],123读取输入并存储结果。例如'A,123'或'B,456'(单个大写字母后跟冒号后跟一个整数,允许使用空格)
我能够使用几个单独的scanf来实现这一点。但是我正在尝试使用一次调用scanf。
我不明白为什么以下不起作用:
char temp[23];
int a = 0;
int result = scanf("%1[A-Z]s , %d", temp, &a);
printf("%d = %d, %s\n", result, a, temp);
此代码返回1,并且永远不会设置变量a。我正在使用gcc -ansi -pedantic
答案 0 :(得分:4)
binomial_heap_decrease_key(node, key)
VS
int result = scanf("%1[A-Z]s , %d", temp, &a);
// ^^^
// read 1 letter, a literal "s", optional whitespace,
// a literal comma, optional whitespace, an integer
要告诉天气解析失败,因为没有逗号或因为第二个参数不是数字而是将逗号读入变量,然后检查它:
int result = scanf("%1[A-Z] , %d", temp, &a);
// no s
// read 1 letter, optional whitespace,
// a literal comma, optional whitespace, an integer
我似乎无法在此计算机上添加评论。