2013-10-10 3 views
2

Следующий код создает файл file.text и печатает следующее в файле "Доступ к случайным носам из файла и отображение на консоли?

1 2 
3 4 

Что наиболее эффективный способ печати значение 4 на консоли. В конкретном случае у меня есть 2000 х 2000 матрица, и мне нужно получить доступ, скажем, значение [2000] [1500] и напечатать то же самое на консоли. Эффективным я имею в виду, как быстро указатель может туда попасть, получить данные и отправить их в буфер отображения.

+2

Если вы хотите сделать это быстро, вам может потребоваться, чтобы файл был правильно заполнен. Если вы знаете, что ваши цифры имеют длину только 1 цифру, вы можете умножить (2 (1 цифра + 1 пробел) на количество записей в одной строке + 1 ('' \ n "')) на 'y': количество линию, которую вы хотите получить (в этом случае я думаю, '2000'?), а затем добавить (2 (то же) раз' x'). Если ваши номера не всегда длинны 1 цифра, вам нужно прочитать файл кусками, считать '' \ n "', а затем подсчитать пробелы. – Eregrith

ответ

1

Предполагая, что «файл» не обязательно должен быть текстовым файлом, а данные, которые необходимо сохранить, не обязательно должны быть отформатированы в виде матрицы (т.е. includesi ng пробелы и новые строки).

Вы можете сделать следующее:

Шаг 1. Откройте файл в двоичном режиме.
Шаг 2. Запишите матрицу (предположим, A[2000][2000]) данные в файл, используя fwrite.
Шаг 3. Теперь ваш файл готов, вы хотите прочитать элемент в позиции [1500][1000].
Шаг 4. Это будет ((1500*2000) + 1000)th целое число, записанное в файле, поэтому используйте fseek, чтобы получить указатель на эту позицию.
Шаг 5: прочитайте целое число с этой позиции, используя fread.

Смежные вопросы