Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Claustrofob
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 37
#1

Почему fseek не переводит указатель - C++

18.06.2011, 21:51. Просмотров 1360. Ответов 9
Метки нет (Все метки)

Помогите барану
от С далек.
Простенькое задание из контрольной по TC++ (3.0) с использованием файлов. Почему процедура fseek() непереводит указатель? ...
...
fseek(f,0,0);
fscanf(f,'%d',x);
...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2011, 21:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему fseek не переводит указатель (C++):

Почему указатель на указатель объявляется как float **A; - C++
Почему float?

Почему не виден указатель? - C++
Необходимо создать програму которая читает из файла кол-во записей в массиве структур,создает динамический массив,а потом получает из файла...

Почему мой указатель обнуляется? - C++
Почему мой указатель обнуляется на какой-то итерации? задача: Функцию, которая возвращает среднее геометрическое элементов столбца и...

Почему не обнуляется указатель через функцию? - C++
В функцию передаю указатель на целое число, хочу удалить память а сам указатель установить в NULL. Но он не устанавливается. Если все...

Подскажите почему указатель работает неправильно? - C++
Вот код: #include <iostream> #include <time.h> #include <cstdlib> #include <vector> using namespace std; void...

Почему плохо возвращать указатель из функции? - C++
Почему плохо то, что мы возвращаем указатель?(return rez) #include <stdio.h> #include <stdlib.h> #define SIZE 10 int*...

9
Aniskov
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 111
18.06.2011, 22:36 #2
Я не в курсе как в ТС++, но посмотри как функция используется(обрати внимание на параметры).

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wcecrt4/html/erlrffseek.asp
0
Claustrofob
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 37
18.06.2011, 23:02  [ТС] #3
Да вроде все верно ...
таже инфа и в контекстном хелпе. Всякие тхтешки перекопал ... где нить есть доступное описание работы с файлами. Как то все в загали и о высоких материях ...
после Паскакаля вообще какой-то бред ))
После fseek... ftell возвращает позицию 0
но после fscanf... читает зараза всеравно не ту запись. ?
следующая проверка ftell возвращает позиции как и до использования fseek'a...
0
Aniskov
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 111
18.06.2011, 23:12 #4
Так у тебя все правильно работает!!!
Ты задаешь вторым параметром позицию куда перейти, она тебя и переводит к началу.
fseek(file,куда сдвинуть(№ байта),SEEK_SET);
0
Claustrofob
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 37
18.06.2011, 23:52  [ТС] #5
да мне нужно считать первую запись.
а fscanf считывает ту на которую был установлен указатель до fseek'a.
0
paradise
19.06.2011, 12:52 #6
Claustrofob:
1. Как связаны между собой 'от С далек.' и 'по TC++ (3.0)' непонятно...

2. Работа fseek может зависить от того, как ты открыл файл (с какими параметрами и в каком ).

3. Используй SEEK_SET, а не 0. С чего ты взял, что с TC++ (3.0) SEEK_SET имеет значение 0?

4. Приведи код до:
Код
fseek(f,0,0);
fscanf(f,'%d',x);
Aniskov
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 111
19.06.2011, 20:01 #7
Попробуй использовать rewind(FILE* f).
Эта функция 'перематывает' фаил на начало.
0
Aniskov
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 111
19.06.2011, 20:13 #8
А правильно ли ты используешь fscanf.
И что такое х.
Если это не строка (это врятли так как у тебя '%d') и не указатель то надо писать &x.
Да и еще какого содержания фаил, может там не int числа.
Я полностью солидарен с paradise, трудно что-то сказать когда не видешь код, все равно что лечение по телефону ).
0
Aniskov
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 111
19.06.2011, 20:15 #9
Сорри, в предыдущем сообщении перед 'то' в 3-ей строке забыл запятую.
0
paradise
20.06.2011, 10:36 #10
Aniskov, рыз ты заморачиваешься на правописании, то в первом предложении ты вместо знака вопроса поставил точку

Поддерживаю Aniskov - лечение по телефону - как раз данный случай.
20.06.2011, 10:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2011, 10:36
Привет! Вот еще темы с ответами:

Почему мы не разыменовываем указатель на элемент массива? - C++
int *ptrarray = new int ; for (int i = 0; i < 10; i++) { ptrarray = i; cout << ptrarray << " "; } ...

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Почему нельзя объявить указатель на шаблонную структуру? - C++
template <class T> typedef struct per { T znach; int kol_vo_povt; }* p; int main() { per<int> k; }

Почему delete не устанавливает автоматически указатель в NULL? - C++
Почему delete не устанавливает автоматически указатель в NULL?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.