2013-09-20 4 views
0

У меня есть большие данные в файле, но каждый раз, когда я читаю только 4096 элементов. Итак, во второй раз, когда я читаю, я должен обновить указатель до 4097-го элемента. Как мне это сделать?Установка позиции указателя

+1

Путь не достаточно информации, чтобы ответить на этот вопрос –

+0

Как насчет [FSEEK] (http://pubs.opengroup.org/onlinepubs/009696799/functions/fseek.html) –

+0

Читайте на 'FSEEK()' –

ответ

1
char *p = input; 
/* do some code, use p instead of input*/ 
p = p+4096; 
+0

Что вводится выше? –

+0

@Vivek "input" Я считаю, что массив хранит ближайшие данные. И «сделать некоторый код» означает чтение этих данных и сохранение их во вводе (с использованием переменной «p» в качестве указателя на тот же блок памяти) –

0
ptr++; 

должен сделать трюк.

Как это работает, c неявно понимает, что это место в памяти + размер объекта данных, на который указывает poitner. В случае int это будет sizeOf (int). =]

1

Если вы используете fread() или fscanf() или fgetc() для чтения из файла, он автоматически увеличивает указатель файла. Вы можете проверить это, используя ftell().

Пример:

fread(buf, 4096, 1, fp); // Call 1 
fread(buf, 4096, 1, fp); // Call 2, just after 1st one 

прочтет 4096 байт из файла, на который указывает fp, храните его в buf и второй раз он начнет чтение с байта # номером 4097.
Вам не нужно явно приращение fp.

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