很好的一天,
我有以下代码:

 43     while (TRUE)
 44     {
 45         printf("Swipe Card: ");
 46         scanf("%s;%s=%s", id, banner, cp);
 47         printf("%s\n%s\n%s\n", id, banner, cp);
 48         ProcessStudent(banner, file);
 49
 50     }

我已经动态地分配了idbannercp,但是当我试图打印它们(我只是为了检查它们的内容)时,所有的东西都只被带到“id”中。我试图读取的字符串如下所示%GRE068?;01540594=000331!

最佳答案

scanf不尝试对格式字符串进行完整的模式匹配。%s输入格式只需将所有内容读取到下一个空格(或EOF)。之后,它会查找一个;,因为它没有发现它没有解析任何其他输入。
如果要在其他字符处停止,请使用[^char]

scanf("[^;];%[^=]=%s", id, banner, cp);

关于c - 用C输入,特殊情况?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36608221/

10-12 05:15