我正在尝试用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;电路。
答案 0 :(得分:1)
行fscanf(circuit("%s %d ", str1, &numin);
读取INPUTVAR和此行中的3行:INPUTVAR 3 AB C.但是,下一次读取将获得AB C.您需要阅读这些项目以跳过它们并转到下一行。