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

Как правильно переместить позицию в потоке? - C++

Восстановить пароль Регистрация
 
4classic4
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 21
09.03.2014, 15:28     Как правильно переместить позицию в потоке? #1
Почему выводится на консоль 52, а не цифра 4?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <stdio.h>
using namespace std;
void main () {
setlocale(LC_ALL, "Russian");
#pragma warning(disable : 4996);
FILE *in=fopen("input.txt","rb");
for(int j=0; j<10; j++) for(int i=1; i<=9; i++) fprintf(in, "%d",i);
fseek(in, 3*sizeof(int), SEEK_SET);
cout<<fgetc(in);
fclose(in);
system("pause");
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.03.2014, 16:09     Как правильно переместить позицию в потоке? #2
Цитата Сообщение от 4classic4 Посмотреть сообщение
fprintf(in, "%d",i);
Зачем Вы пишите в файл для чтения?
4classic4
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 21
09.03.2014, 16:13  [ТС]     Как правильно переместить позицию в потоке? #3
Цитата Сообщение от Tulosba Посмотреть сообщение
Зачем Вы пишите в файл для чтения?
Извините, старый код скопировал, я после изменил, но все равно...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <stdio.h>
using namespace std;
void main () {
setlocale(LC_ALL, "Russian");
#pragma warning(disable : 4996);
FILE *in=fopen("input.txt","w");
for(int j=0; j<10; j++) for(int i=1; i<=9; i++) fprintf(in, "%d",i);
fseek(in, 3*sizeof(int), SEEK_SET);
cout<<fgetc(in);
fclose(in);
system("pause");
}
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.03.2014, 16:20     Как правильно переместить позицию в потоке? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 4classic4 Посмотреть сообщение
но все равно...
что надо сделать-то?
Цитата Сообщение от 4classic4 Посмотреть сообщение
fgetc(in);
fgetc возвращает int, поэтому и выводит код символа, а не сам символ.
Сделайте так:
C++
1
cout<< static_cast<char>(fgetc(in));
Yandex
Объявления
09.03.2014, 16:20     Как правильно переместить позицию в потоке?
Ответ Создать тему
Опции темы

Текущее время: 07:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru