此处异常:
//outfile1 << all_names.name << " " << all_names.file << std::endl;
strcpy(name_array[i], all_names.name);
strcpy(file_array[i], all_names.file);
//std::string cc = "AH008-12-180-CMA4220EBL7C";//?????20200119 find abnormal-txwtech
//strcpy(name_array[89], cc.c_str());//?????20200119 find abnormal-txwtech
all_names.name[0] = NULL;
all_names.file[0] = NULL;
int xdirectory(int device)
{
static int tt = 0;
FILE *in;
int i, j, k;
char temp_string[XMAX_FILE_LENGTH + 1], temp_string2[XMAX_FILE_LENGTH + 1];
// std::string filename1 = "C:\\MY511DATA\\XXX1.txt";
// std::string filename2 = "C:\\MY511DATA\\XXX2.txt";
// std::ofstream outfile1( filename1.c_str(), std::ios_base::app );
// std::ofstream outfile2( filename2.c_str(), std::ios_base::app );
create_index_file(device);
switch (device)
{
case ADEVICE :
case CDEVICE :
case WDEVICE :
case OPDEVICE:
case MUDEVICE:
case CHDEVICE:
in = fopen(file, "rb");
i = 1;
do
{
fread(&all_names ,sizeof(all_names) ,1 ,in);
fgetc(in);
fgetc(in);
if (i == 90 && tt == 0)
{
tt++;
all_names.name[0] = NULL;
all_names.file[0] = NULL;
fread(&all_names ,sizeof(all_names) ,1 ,in);
fgetc(in);
fgetc(in);
}
//outfile1 << all_names.name << " " << all_names.file << std::endl;
strcpy(name_array[i], all_names.name);
strcpy(file_array[i], all_names.file);
//std::string cc = "AH008-12-180-CMA4220EBL7C";//?????20200119 find abnormal-txwtech
//strcpy(name_array[89], cc.c_str());//?????20200119 find abnormal-txwtech
all_names.name[0] = NULL;
all_names.file[0] = NULL;
i++;
} while (!feof(in) && (i < MAX_FILES));
fclose(in);
// Sorting
for (j = 2; j <= (i-2); j++)
{
strcpy(temp_string, name_array[j]);
strcpy(temp_string2, file_array[j]);
for (k = (j-1); k != 0; k--)
{
if (strnicmp(temp_string, name_array[k], XMAX_FILE_LENGTH) < 0)
{
strcpy(name_array[k+1], name_array[k]);
strcpy(file_array[k+1], file_array[k]);
}
else
break;
};
strcpy(name_array[k+1], temp_string);
strcpy(file_array[k+1], temp_string2);
}
return(i - 2);
case MDEVICE :
case SDEVICE :
strcpy(name_array[1], default_device_name);
strcpy(file_array[1], default_device_name);
return(1);
default :
return(1);
}
}