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

Функция getc (FILE*) при первом вызве считывает НЕ ПЕРВЫЙ символ файла.Почему? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Simple WinAPI framework http://www.cyberforum.ru/cpp-beginners/thread46975.html
#include "app.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int ShowCmd) { Application *app = new Application(hInstance); app->Initialize(); int result...
C++ Вопрос о строках. Здравствуйте, все. Талдычу строки. #include <iostream> #include <stdio.h> using namespace std; int main() { http://www.cyberforum.ru/cpp-beginners/thread46966.html
C++ Определить, содержит ли 4-х значное число 3 одинаковые цифры.
Я сортирую, а потом сравниваю, но что то не работает :( char* mas(char* a, int s); int main(int argc, char *argv) { const int size=100; char arr; int i, k;
Выбрать и упорядочить данные из текстового файла C++
В языке С не сильна, и программа вызвала некое недоумение) Есть тестовый файл со следующими данными: 0.299 -0.410 960.20 4551.85 1.120 346.85 275.46 20.508 19.854 99.999 20.085 19.431...
C++ Координаты для вывода массива http://www.cyberforum.ru/cpp-beginners/thread46893.html
Товарищи, помогите массив вывести в координатах. Делаю так: HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = {50,50}; const int y=3,x=3; int a={1,1,1,1,1,1,1,1,1}; int i, j;...
C++ От чего мы любим С++? Хочу спросить наших уважаемых гуру, как истинных специалистов в области программирования на С++ несколько давно наболевших вопросов. Я уже успел попробовать всего по чуть-чуть и мне сложно... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,460
13.08.2009, 10:20  [ТС]
Спасибо конечно, но я тоже хз когда его закрывать надо, этот файл, а помнить-то я об этом помню. Пишут везде, так примерно:
Когда вы закончите все операции с файлом, то не забывайте закрыть файл
(Стефан Кочан)
Нормальная формулировка? K&R не цитирую, там вообще чёрт ногу сломит.
Ну, вот, а программа подразумевает, что я и далее буду в файл что-то записывать. То есть я э... не все операции закончил. А будет ещё запись в файл, считывание, снова запись.


Теперь же есть я буду делать так, как Вы сказали, но честно говоря, я не понял, почему неправильны мои действия. Разве что потому, что не достигнут желаемый результат. Что ж, на том и остановимся. А учусь я сам. Спасибо ещё раз.

C++
1
2
3
4
5
6
7
8
9
10
11
12
//Записываем символы в файл     
fputc ('b', zapis_v_fail);       
 
//Считываем на экран первый символ
printf ("simvol= %d", getc (chetnie_iz_faila));       
 
//Снова записываем символы в файл  
fputc ('f', zapis_v_fail);
 
//Вот тут-то я и закрыл бы файл
fclose (zapis_v_fail);      
fclose (chetnie_iz_faila)
Добавлено через 8 минут 30 секунд
Пршу прощения, редактирую

Добавлено через 48 минут 15 секунд
Вот, вопрос-то всё равно остался открытым. В это примере после считывания файла считывание продолжается не с того, места, на котором закончилось, а с начала, хотя файл НЕ БЫЛ закрыт

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Пусть в текущем каталоге есть файл "fail.txt" с содержанием "abcdef"
#include <iostream>
using namespace std;
int main () {
 
FILE* odin_raz;
FILE* vtoroi_raz;
 
odin_raz= fopen ("fail.txt", "r");
vtoroi_raz= fopen ("fail.txt", "r");
 
//Считаем что-нибудь из file.tx. Считаем первые 4 символа
getc (odin_raz);
getc (odin_raz);
getc (odin_raz);
getc (odin_raz);
 
/*А теперь, НЕ ЗАКРЫВАЯ файл, продолжим считывание. М.. Судя по всему, должен считаться символ 'e'
*/
printf ("simvol= %c\n", getc (vtoroi_raz));
 
//Но считался не 'e', а 'a'
getchar ();
return 0;
}
Вот что хочешь, то и думай.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru