我正在尝试编写一个从stdin读取文本文件的程序,该文件每行具有2个值,例如300 1941、301 1942 一个值应该分配给变量 adr ,另一个应分配给 instr 。 我该如何创建一个函数来打开文件,通过while循环从头读取到EOF,并在每次迭代中将这些值分配给变量?
到目前为止我所做的
void load_program(struct machine *m){
unsigned int adr, instr;
//something that iterates through the file and adds the values to the
variables)
答案 0 :(得分:1)
在C语言中,可通过全局stdin
文件句柄使用stdin,因此无需单独打开文件。
要从stdin中读取整数对,您可以简单地使用fscanf(...)
function,例如:
// pairs.c
#include <stdio.h>
int main()
{
int addr, instr;
while (fscanf(stdin, "%d %d", &addr, &instr) == 2) {
printf("OK: addr=%d, instr=%d\n", addr, instr);
}
return 0;
}
您可以通过管道将文件传递或重定向到已编译的程序,例如:
$ echo -e "11 22\n33 44\n55 66" | ./pairs
OK: addr=11, instr=22
OK: addr=33, instr=44
OK: addr=55, instr=66
$ echo -e "111 222\n333 444\n555 666\n777 888" > input.txt
$ ./pairs < input.txt
OK: addr=111, instr=222
OK: addr=333, instr=444
OK: addr=555, instr=666
OK: addr=777, instr=888