如果文件不包含特定数据类型,如何 return 出错

How to return error if a file does not contain specific data types

我正在阅读一个文本文件,其中按特定顺序包含以下内容:大写字母数字大写字母(例如 C4S)。我可以使用 sscanf 成功执行此操作,其中 'line' 是从 fgets 中找到的字符数组。

伪代码:

sscanf(line, "%c %d %c", &firstLetter, &number, &secondLetter)

如果文件不包含 'capital-letter number capital-letter' 的顺序,我想 return 一个错误。我该怎么做?

我建议不要在基本上所有您不确定所提供的输入是否与您的格式字符串匹配的情况下使用 sscanf。所以你在这里可以做的是首先执行这样的检查,然后,如果成功,调用 sscanf:

if (strlen(line) == 3 && isupper(line[0]) && isdigit(line[1]) && isupper(line[2])) {
   sscanf(line, "%c%1d%c", &c1, &d, &c2);
} else {
   puts("line not valid");
   // error handling goes here
}

我稍微更改了一些变量名和格式字符串,但您可以轻松地适应它。