LINUX.ORG.RU

fopen()


0

1

День добрый! собственно вопрос по функции fopen.

как с помощью функции fopen созать(открыть для чтения) много файлов (штук 100), по переменной??? собственно есть переменная page. когда page=1 сощдаем файл «1» и в него записываем данные, далее увеличиваем page=2 и создаем файл «2» и т.д.

сама page имеет тип int, а в функции fopen (const char*, ....) имя файла задается по типу чар! тут я так понимю как то надо перевести из инт в чар???если да то как?

1) лучше вам закрывать файлы. Держать много открытых файлов плохо.

2) sprintf() потенциально опасна. Хотя в вашем случае можно выделить заведомо большой буфер, например в 256 символов.

drBatty ★★
()
Ответ на: комментарий от drBatty

2) sprintf() потенциально опасна. Хотя в вашем случае можно выделить заведомо большой буфер, например в 256 символов.

Именно поэтому я посоветовал snprintf.

Deleted
()
Ответ на: комментарий от drBatty

ну я делаю так в своей проге:
int page;
char buffer[10];

...........
f=fopen(«1.dot»,«w+»);

for(page=2;page<=N;page++)
{
fclose(f);
snprintf(buffer,19,«%d.dot»,page);
f=fopen(buffer,«w+»);
printf(«Create file - %s\n»,buffer);

...............
fprintf(f,"...",...)
..............
}

в итоге создается N-ое количество файлов типа 1.dot,2.dot, и т.д. вроде работает.

kovalski
() автор топика
Ответ на: комментарий от kovalski

странно. под буфер у вас выделено 10 символов, а пишете вы 19. Зачем так делать-то?!

Работать оно конечно работает, но почему нельзя сделать по-человечески?

for(page=1; page <= N; page++)
{
 f = fopen();
 ...
 fclose(f);
}

drBatty ★★
()
Ответ на: комментарий от catap

количество открытых файлов лимитируется для пользователя, и потому ваша программа может завалить другие приложения. Пользователь будет ОЧЕНЬ недоволен таким поведением.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.