Стек вокруг переменной 'fname' поврежден - PullRequest
0 голосов
/ 22 января 2019

Программа предназначена для чтения нескольких файлов bin. В конце «основной» программы произошла вышеупомянутая ошибка.где я неправильно написал код?спасибо за помощь

    char* read_back(const char* filename) 
    {
    FILE* pFile;
    long lSize;
    char* buffer;

    pFile = fopen(filename, "rb");
    if (pFile == NULL) { fputs("File error", stderr); exit(1); }
    fseek(pFile, 0, SEEK_END);
    lSize = ftell(pFile);
    rewind(pFile); // set file pos at the begining
    // copy the file into the buffer:
    buffer = (char*)malloc(sizeof(char)*lSize);
    size_t result = fread(buffer, 1, lSize, pFile);
    if (result != lSize) { fputs("Reading error", stderr); exit(3); }
    fclose(pFile);
    return buffer;
    }
int main() {
    const char *fname[2] ;
    fname[0] = "C:\\0_data.bin";
    fname[1] = "C:\\1_data.bin";
    fname[2] = "C:\\2_data.bin";
    int i;
    char * readback_data;

    for (i = 0; i < 3; ++i) 
    { 
        readback_data=read_back(fname[i]);      
    }
    return 0;
 }

1 Ответ

0 голосов
/ 22 января 2019
const char *fname[2] ;

Это объявляет массив с двумя значениями, двумя указателями: fname[0] и fname[1].

fname[0] = "C:\\0_data.bin";
fname[1] = "C:\\1_data.bin";
fname[2] = "C:\\2_data.bin";

Это попытка поместить три указателя в массив размером только для двух. Это твое повреждение стека, прямо здесь.

...