【发布时间】:2016-04-28 17:19:47
【问题描述】:
我正在使用带有 fscanf 的 for 循环将文件中的 5 列输入到结构数组中。每个结构有 5 个变量:1 个字符串和 4 个整数,第一个 fscanf 读取字符串名称并将其存储为将其他 4 个输入整数构造到所述结构中(全部指向结构的不同变量)。使用正常输入它工作正常。但是当一个字符被输入到整数列之一时,scanf 将 0 和该结构的其余值放入并使用 char 就好像它是一个新结构一样,即它跳过它之后的所有内容并使用不需要的 char 作为名称将行的剩余值作为其输入。 我的问题是,是否有一种方法可以忽略该输入生成的不需要的结构,或者有一种方法可以简单地防止识别字符并跳过特定的 scanf? 我尝试使用 fgets 而不是 scan 但它不起作用,而且我不能使用 0 来整理不需要的值,因为 0 可以作为正常值输入。 我理解理想情况下查看代码会有所帮助,但出于抄袭的原因,我不想发布它,因为这是针对大学的,我不渴望那些抄袭会议。 如果问题没有得到很好的解释,请提前致谢。 :)
【问题讨论】:
-
fscanf()函数真的很难正确使用,特别是用于输入验证。也就是说,请阅读它的返回值。