gpt4 book ai didi

c - 使用 sscanf 检查字符串格式

转载 作者:行者123 更新时间:2023-12-02 03:40:48 25 4
gpt4 key购买 nike

我想将我的字符串与给定格式进行比较。

我想在支票中使用的格式是:

"xxx://xxx:xxx@xxxxxx" // all the xxx are with variable length

所以我使用了 sscanf() 如下:

if (sscanf(stin,"%*[^:]://%*[^:]:%*[^@]@") == 0) { ... }

在这种情况下比较scanf的返回值是否为0是否正确?

最佳答案

只有当所有字段都匹配时,您才会返回零;但这并不能告诉你在练习中深蹲。它可能因第一个字符中有冒号而失败,但仍会返回 0。

您至少需要在其中计算一次转化(%n 未计算在内),并且发生在最后,以便您知道之前发生的情况也匹配。您永远无法判断尾随上下文(最后一个转换规范之后的数据)是否匹配,如果 sscanf() 已转换数据,则不会备份,即使备份允许尾随上下文匹配。

对于您的场景,这可能是:

char c;
int n;

if (sscanf(stin, "%*[^:]://%*[^:]:%*[^@]@%n%c", &n, &c) == 1)

@ 后至少需要一个字符。它还会告诉您有多少个字符,包括 @

关于c - 使用 sscanf 检查字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20215536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com