我在使用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
时也收到了相同的警告。
答案 0 :(得分:1)
似乎格式化错误,您想要读取冒号并且没有逗号。试试这个:
scanf("%m[^':']:%m[^':']", &str, &i);
希望这有帮助。