Я работаю над сортировкой нескольких больших файлов в C ++. У меня есть текстовый файл, содержащий имена всех входных файлов, по одному в каждой строке. Я хотел бы прочитать имена файлов по одному, сохранить их в массиве, а затем создать файл с каждым из этих имен. Прямо сейчас я использую fopen и fread, которые требуют символьные массивы (я пытаюсь оптимизировать скорость), поэтому мои имена файлов читаются в массив символьных массивов. Однако для этих массивов необходимо заранее зафиксировать максимальный размер, поэтому, если имя файла меньше максимального, остальное заполнено мусором. Затем, когда я пытаюсь использовать этот массив в качестве имени файла в fopen (), он не распознает файл, потому что у него есть мусор в конце строки. Как я могу решить эту проблему? Вот мой код:
#include <iostream>
#include <fstream>
#include <string>
#include "stdafx.h"
#define NUM_INPUT_FILES 4
using namespace std;
FILE *fp;
unsigned char *buff;
FILE *inputFiles[NUM_INPUT_FILES];
int _tmain(int argc, _TCHAR* argv[])
{
buff = (unsigned char *) malloc(2048);
char j[8];
char outputstring[] = "Feelings are not supposed to be logical. Dangerous is the man who has rationalized his emotions. (David Borenstein)";
fp = fopen("hello.txt", "r");
string tempfname[NUM_INPUT_FILES];
//fp = fopen("hello.txt", "r");
for(int i=0;i<NUM_INPUT_FILES;i++)
{
fgets(tempfname[i], 20, fp);
cout << tempfname[i];
}
fclose(fp);
for(int i=0; i<NUM_INPUT_FILES;i++)
{
fp = fopen(tempfname[i], "w");
//fwrite(outputstring, sizeof(char), sizeof outputstring/sizeof(char), fp);
if(fp)
{
fclose(fp);}
else
cout << "sorry" << endl;
}
return 0;
}
Кроме того, как мне найти размер буфера для записи с помощью fwrite ()?
Большое спасибо,
BSG