Прочитать текстовый файл со значением 2 для каждой строки в C - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать программу, которая читает текстовый файл из stdin, который имеет 2 значения в строке, например, 300 1941, 301 1942. Предполагается, что одно значение будет присвоено переменной adr , другоедолжен быть присвоен instr .Как сделать функцию, которая открывает файл, читает с начала в EOF через цикл while и присваивает эти значения переменным на каждой итерации?

Что я сделал до сих пор

void load_program(struct machine *m){

  unsigned int adr, instr;

  //something that iterates through the file and adds the values to the 
variables)

1 Ответ

0 голосов
/ 26 сентября 2018

В C стандартный ввод доступен через глобальный дескриптор файла 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
...