【发布时间】:2016-03-05 12:46:49
【问题描述】:
我正在尝试用 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 = 交流; Q = w + x; Inputvar 具有后跟一个 int 的格式,然后是对应于变量名称的许多字符,对于 Outputvar 也是如此。
前输入:
1 0 1
0 0 1
我正在尝试读取输入的第一行,然后读取电路文件的前 2 行,以使用索引处的相应值填充数组。
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 是因为我为每种“电路块”类型指定了格式。
如何让它也读取 circuit.txt 中的第二行?在我这样做之后,我必须阅读其余的行来“创建”电路。
【问题讨论】:
-
不要使用
while(!feof(input)检查fscanf()的结果以了解何时退出循环。 -
如果你真的想要容错代码,用
fgets()阅读每一行然后解析。如果使用sscanf()解析,请检查其结果。