Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2009, 20:56   #1
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию C++. Последовательное обращение к файлам с расширением

Каким образом можно последовательно с помощью цикла обратиться для считывания информации к файлам "1.txt", "2.txt" и т.д. до некого n.txt, где n вводится с клавиатуры?

Мое решение не подходит:

Код:
short f, fRange;
char *fileName;

cout << "Enter file range: ";
cin >> fileRange;

for (f=1; f <= fRange; f++) {
  *fileName = (char)f + ".txt";

ifstream fin(fileName)
......
.....
}
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 30.04.2009, 21:07   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
char filename[10];

for(f=1; f<=fRange; f++)
 {
 strcpy(filename,(char)(f+48));
 strcat(filename,".txt");
 ifstream fin(filename);
.............
 }
А вообще, если пишете на C++, то лучше использовать string.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.04.2009, 21:14   #3
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

И вновь спасибо, Сазари.
Чтобы я постоянно не отвлекал такими глупыми вопросами, может подскажешь, где я все эти основные и неосновные операции со строками могу прочитать?
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 30.04.2009, 21:15   #4
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

И еще. Если f = 19, то тогда прибавление 48 ведь не поможет?
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 30.04.2009, 21:20   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
И еще. Если f = 19, то тогда прибавление 48 ведь не поможет?
Да. Тогда используйте функцию преобразования числа в строку - itoa
Код:
itoa (int, char*, int);
Цитата:
где я все эти основные и неосновные операции со строками могу прочитать?
http://www.cplusplus.com/reference/
Или в книге Шилдта "Полный справочник по Си"
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.04.2009, 21:24   #6
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Vielen Dank!
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 06.05.2009, 21:45   #7
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Код:
short f, fRange;
char *fileName = new char[100];

for (f = 1; f < fRange; f++)
{
  itoa(f, fileName, 10);
  ifstream fin(fileName);
......
......
  fin.close();
  fin.clear();
}
Привожу кусок из программы. Файлы, к которым я последовательно обращаюсь называются просто "1", "2".... "11", "12" и т.д. без расширения.
Так вот к первым девяти файлам обращение идет нормальное, но на 10 он сбивается опять на первый. Видимо смотрит только на первый символ. Как можно это исправить радикально не меняя код?
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 06.05.2009, 21:49   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вообще, все должно работать. Кстати, а где у вас инициализируется fRange?

Вот пример, который показывает, что все должно работать:
Код:
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
short f, fRange=15;
char *fileName = new char[100];
for (f = 1; f < fRange; f++)
{
 itoa(f, fileName, 10);
 cout<<fileName<<endl;
 }

 getch();
 return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 06.05.2009, 21:54   #9
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Я не указал просто. С клавиатуры вводится.
Оказывается ошибся я в том, что в строчке
Код:
cout<<fileName<<endl;
разыменовал fileName, соответственно он давал результат только первой цифры. Спасибо
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление файлов с расширением *.tmp maxi_mum Помощь студентам 4 03.04.2009 15:26
Последовательное копирование непустых строк.. Judge52 Microsoft Office Excel 2 13.03.2009 08:23
Как получить график из файла с расширением .crd feldmaster Помощь студентам 1 22.04.2008 23:19
Генерация файла с расширением CPP Solan Общие вопросы C/C++ 8 28.09.2007 10:01