fscanf有2个文件和多行

时间:2015-12-01 14:42:03

标签: c scanf

我正在尝试用2个文本文件构建一个电路模拟器,一个包含电路描述,另一个包含值。

前线电路:

 INPUTVAR 3 A B C
 OUTPUTVAR 1 Q
 AND A B w
 AND A C x
 OR w x Q

这样就形成了电路:w = A.B; x = A.C;和Q = w + x; Inputvar的格式是后跟一个int,然后是许多对应于变量名称的字符,对于Outputvar也是如此。

ex input:

 1 0 1
 0 0 1

我试图在输入的第一行读取然后读取电路文件的前两行,以在索引处填充具有相应值的数组。

 FILE *circuit, *input;
 input = fopen(argv[2],"r");
 int upper[26],output[26]; //upper is array of all upper letters, output is same.
 char str1[10],str2[10];
 int i,numin,numout;

 while(!feof(input)
 {
 circuit = fopen(argv[1],"r");
 fscanf(circuit("%s %d ", str1, &numin);
 //this works correctly and gets INPUTVAR then 3.
 for(i = 0; i <numin; i++)
 fscanf(input,"%d ",&upper[i]);
 fscanf(circuit,"%s %d ",str2,&numout);
 //does not work correctly
 }

在使用输入变量填充数组后,我试图获取多少输出及其名称,然后使用临时数填充相应的数组(输出)以供以后使用。我正在使用fscanf,因为我为每种类型的&#34;电路块&#34;指定了格式。

如何让它也读取circuit.txt中的第二行?在我这样做之后,我必须阅读剩下的部分来&#34;创建&#34;电路。

1 个答案:

答案 0 :(得分:1)

fscanf(circuit("%s %d ", str1, &numin);读取INPUTVAR和此行中的3行:INPUTVAR 3 AB C.但是,下一次读取将获得AB C.您需要阅读这些项目以跳过它们并转到下一行。