如何只接受C中文件的数值?

时间:2011-08-21 16:02:42

标签: c

我已经开始了一个项目,我想要一些帮助。基本上它是一个检查板上是否连接某些引脚的程序。 (嗯,这是简化版。整个过程都是带微控制器的电路。)

问题在于,当一个引脚连接时,我得到一个数值,当它没有连接时,我没有得到任何值,因为它在我的表中是一个空白。

我如何接受这些价值?

我甚至需要接受空白,要知道它没有连接, 加上该表还包含一些其他非数字值。 我尝试使用fscanf()函数读取文件,但它不太起作用。我知道只有fscanf()fread()fgets()fgetc()函数可以从不同类型的文件中读取。

此外,是否可以使用C?

从Excel文件中读取数据

该表的一个例子是:

FROM          TO
1             39
2   

在这里,数字1和2位于FROM列之下,它告诉连接器的第一端连接到哪个引脚。 T下的数字告诉我们连接器的另一端连接到哪个引脚,当列为空白时,它的一端没有连接。

现在我要做的是创建一个程序来为微控制器创建汇编语言程序,所以我需要能够读取连接器是否已连接,以及是否连接到哪个引脚?因此,我需要执行一些操作。 (我可以自己管理)。

我面临的困难是从特定的行读取并阅读空白。

4 个答案:

答案 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()系列中使用调用。