某个库中是否已经内置了一些 C 技巧,或者我是否必须编写一些东西来手动检查它? 以下代码帮助我检测读取的参数数量是否太少,但不会太多,因为 sscanf 会在例如 3 处停止,即使该行中有 5 个参数并转到另一行。
if(sscanf(buffer, "%d", &elements->start_state_) != 1)
{
//code
}
附言请记住,我正在逐行输入。
如果读取 0 个或 1 个参数,该程序将运行良好,但未检测到超过 1 个,这对我来说是个问题。
最佳答案
如果我没理解错的话,你想知道一行中最后使用的参数之后是否有任何内容 - 我假设你是通过调用 fgets
.
面对这个问题,我通常所做的只是尝试解码最后一个参数后的单个非空白字符:
char dummy[2]; /* save space for terminating null */
...
if(sscanf(buffer, "%d%1s", &elements->start_state_, dummy) != 1) {
...
}
如果 sscanf
行中没有任何内容(参数太少),将返回一个太低的值,如果至少有一个非空参数,它将返回 1 太高。
关于c sscanf 检查一行中是否有多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35505202/