Попытка записать файл, который читает первый байт в файле, в байт, указанный пользователем. Мне нужна помощь по логике. Если в файле есть буквы от a до z, и я просто хочу прочитать и отобразить первые 10, например. вот часть того, что я написал:
char byte;
inFile.seekg(0L,ios::beg);
inFile.get(byte);
cout << byte;
for(int i = 0; i < num; i++); //num is an int specified by the user.
{
inFile.seekg(1, ios::cur);
inFile.get(byte);
cout << byte;
}
Первая проблема — точка с запятой на конце for()
линия:
for(int i = 0; i < num; i++);
{
...
}
На самом деле компилятор видит следующее:
for(int i = 0; i < num; i++) { /* do nothing num times */ }
{
// code that will only run once
}
Итак, удалите точку с запятой.
Далее, если вы просто читаете байты подряд, нет необходимости искать между ними. Просто звоню get()
получит следующий байт в последовательности. Так что удалите seekg()
звонки.
Последняя проблема — эта функция на самом деле вызывает inFile.get()
Всего num + 1
раз. Первый звонок перед for
петля. Тогда в for
петли, get()
называется num
раз (т.е. я = 0, 1, 2, 3 … число-1). Вы можете исправить это, изменив for
счетчик цикла (i = 1; i < num; i++)
или просто удалив get()
позвонить до for
петля. В приведенном ниже коде я выбрал второй путь:
void run(int num, istream &inFile)
{
char byte;
for(int i = 0; i < num; i++)
{
inFile.get(byte);
cout << byte;
}
}
Других решений пока нет …