我已经开始了一个项目,我想要一些帮助。基本上它是一个检查板上是否连接某些引脚的程序。 (嗯,这是简化版。整个过程都是带微控制器的电路。)
问题在于,当一个引脚连接时,我得到一个数值,当它没有连接时,我没有得到任何值,因为它在我的表中是一个空白。
我如何接受这些价值?
我甚至需要接受空白,要知道它没有连接,
加上该表还包含一些其他非数字值。
我尝试使用fscanf()
函数读取文件,但它不太起作用。我知道只有fscanf()
,fread()
,fgets()
和fgetc()
函数可以从不同类型的文件中读取。
此外,是否可以使用C?
从Excel文件中读取数据该表的一个例子是:
FROM TO
1 39
2
在这里,数字1和2位于FROM列之下,它告诉连接器的第一端连接到哪个引脚。 T下的数字告诉我们连接器的另一端连接到哪个引脚,当列为空白时,它的一端没有连接。
现在我要做的是创建一个程序来为微控制器创建汇编语言程序,所以我需要能够读取连接器是否已连接,以及是否连接到哪个引脚?因此,我需要执行一些操作。 (我可以自己管理)。
我面临的困难是从特定的行读取并阅读空白。
答案 0 :(得分:1)
使用fgets()
或亲戚阅读这些行。然后在该行上使用sscanf()
,检查是否有一个或两个成功的转换(返回值)。如果有一次转换,则第二个值为空或缺失;如果是两个,那么你可以安全地使用这两个号码。
请注意fscanf()
和亲戚会读取过去的换行符,除非您小心,因此他们不会提供您需要的信息。
答案 1 :(得分:0)
所以你的文件更像是这个
Col1 col2 \n
r1val1 r1val2\n
.
.
等等,如果是这种情况,那么使用fscanf()从文件中读取字符串(直到\ n)。然后使用strtok()函数将字符串分解为标记,这里是相同的教程
http://www.gnu.org/s/hello/manual/libc/Finding-Tokens-in-a-String.html
希望这会有所帮助...... 一个更简单的建议..如果你是一个新手,首先要做c编程工作,不要直接去微控制器,因为如果你不了解一些基本概念,你可能会以错误的方式理解很多东西。 ..
答案 2 :(得分:0)
这是C中的一个常见问题。当行边界在语法中有意义时,很难仅使用 scanf() - 家庭函数直接读取文件。
只需使用fgets(3)
阅读每一行,然后一次在一行上运行sscanf()
。通过这样做,您不会错误地跳到前面读取下一行的第一列。
答案 3 :(得分:0)
由于一行上有两个值,你可以解析第一个,找到下一个空格,然后解析下一个查找它的缺席。我说解析而不是scanf()就像我真正想要控制,或者有大量数字要扫描一样,我在strtol()系列中使用调用。