使用scanf分隔冒号的麻烦

时间:2015-02-07 21:24:15

标签: c 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时也收到了相同的警告。

1 个答案:

答案 0 :(得分:1)

似乎格式化错误,您想要读取冒号并且没有逗号。试试这个:

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

希望这有帮助。