Сканирование чисел из файла в двумерный массив - PullRequest
0 голосов
/ 11 июля 2019

Я новичок в программировании, поэтому извиняюсь, если что-то напутал.

Итак, я пытаюсь отсканировать файл с несколькими строками чисел и поместить их в двумерный массив. Я пытался найти другие вопросы, связанные с этим, и пока ничего не помогло.

Итак, я попытался использовать вложенные циклы для сканирования массива и помещения чисел внутрь, но, похоже, ничего не произошло. Внутри txt файл выглядит следующим образом:

0 7 9 4 0 0 8 0 4 5 0 1 
0 2 4 0 0 0 1 6 2 8 6 0 
0 1 1 1 1 0 8 5 6 8 0 7 
0 5 1 0 0 0 1 3 8 1 0 1 
Каждый 12-й номер - это новая строка.
#include <stdio.h>

#define BUF_SIZE 12
#define ROW 4
#define COL 12
void
barcodeArray(int barcode[ROW][COL])
{
  char buffer[BUF_SIZE];
  FILE* f = fopen("q5_input.txt","r");
  if(f == NULL)
  {
    printf("no such file.");
  }
  for(int k = 0; k < ROW; k++)
  {
    for(int j = 0; j < COL; j++)
    {
      fscanf(f, "%1d", &barcode[k][j]);
      printf("%ls", &barcode[k][j]);
    }
  }
  fclose(f);
}
int
main(void)
{
  int barcode[ROW][COL];
  barcodeArray;
}

printf внутри циклов for просто читает числа, когда вводит числа в массив. Поскольку код это компилирует, но ничего не делает.

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Попробуйте так. Я думаю, что использование freopen () проще и проще. Он позволяет вам использовать те же функции ввода-вывода, которые вы используете для операций ввода-вывода консоли.

#include <stdio.h>
#define BUF_SIZE 12
#define ROW 4
#define COL 12
void barcodeArray()
{
    int barcode[ROW][COL];//This can be declared inside the function.
    char buffer[BUF_SIZE];
    FILE* f=freopen("q5_input.txt","r",stdin);
    if(f == NULL)
    {
        printf("no such file.\n");
        return;
    }
    for(int k = 0; k < ROW; k++)
    {
        for(int j = 0; j < COL; j++)
        {
            scanf("%d",&barcode[k][j]);
            printf("%d ",barcode[k][j]);
        }
        printf("\n");
    }
    fclose(f);
}
int main(void)
{
    barcodeArray();
}

Кроме того, если вы хотите вывести его в файл, вы можете сделать следующее в основной функции:

int main(void)
{
    freopen("out.txt","w",stdout);
    barcodeArray();
}
1 голос
/ 11 июля 2019

Вы должны вызывать вашу функцию с аргументом barcodeArray(barcode);

Редактировать: Если вы не уверены в размере массива, вы можете взглянуть на динамически распределяемые переменные.Это важная часть программирования на C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...