在不存储结果的情况下查找sscanf()的长度

时间:2013-09-17 17:48:33

标签: c scanf

我如何找到sscanf()的长度,我从一个字符串扫描到某个字符而不实际存储它?

sscanf(stringToBeTested, "%[upUntilThis]", StoreToThisString)
strlen(sscanf(stringToBeTested, "%[upUntilThis]", StoreToThisString))

2 个答案:

答案 0 :(得分:3)

您可以使用*来抑制转化规范中的分配,如:

int index_at_end = -1;
sscanf(stringToBeTested, "%*[^upUntilThis]%n", &index_at_end);

%n告诉您在处理过程中扫描到该点的字节数。请注意,%n操作不计算在内,因此sscanf()将返回0次成功转换。这可能会让生活变得棘手。

答案 1 :(得分:1)

听起来你正在寻找strchr(3)

int length = strchr(stringToBeTested, upUntilThis) - stringToBeTested;