使用 scanf 分隔冒号时遇到问题

Trouble with delimiting colon with scanf

我在使用 scanf 时遇到了一些问题。我要读取的输入将是这种格式:

string:integer:

例如,ptest/src/test.c:19:blahblahblah

将是一个有效的字符串。我想存储 p2test/src/test.c19。但是,我 运行 遇到了一些问题,即 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 时也收到了相同的警告。

好像格式不对,要读冒号,没有逗号。试试这个:

scanf("%m[^':']:%m[^':']", &str, &i);

希望对您有所帮助。