为什么迭代通过这个char数组增加数组中的字节而不是数组值?

时间:2018-05-18 19:31:08

标签: c arrays character

我是c的新手,并且很难进行内存管理。

我有一个程序,它接受一个文件数组,遍历每个文件,并将数组复制到结构中的值。

给出文件列表file1.txt, file2.txt, file3.txt

通过我的for循环的第一次迭代按预期工作。所采用的值与预期值file1.txt相同。在第二个循环中,我的GetFileContent()方法中的值为ile1.txt(它仅截断了数组中第一个项的第一位)。如果我将i值更改为2,则会将前2个字母切换为le1.txt

char *GetFileContent(char *filePath)
{
    char *buffer = NULL;
    size_t size = 0;

    FILE *file = fopen(filePath, "r");

    fseek(file, 0, SEEK_END);
    size = ftell(file);

    rewind(file);

    buffer = malloc((size + 1) * sizeof(*buffer));

    fread(buffer, size, 1, file);

    fclose(file);

    buffer[size] = '\0';

    return buffer;

}



int main (void)
{   

    char *file = {"file1.txt", "file2.txt", "file3.txt"};
    int numberOfFiles = sizeof(file);

    struct ArrayStoredInHeap myStruct[numberOfFiles];

    for(int i = 0; i < numberOfFiles; i++)
    {
        struct ArrayStoredInHeap tmpStruct;

        tmpStruct.entireFile = GetFileContent(&file[i]);

        myStruct[i] = tmpStruct;
    }

    for(int i = 0; i < numberOfFiles; i++)
    {
        printf("%s \n", myStruct[i].entireFile);
        getchar();
    }
}

我期望循环中第二次的值为file2.txt,即数组中的第二个值,而不是从数组中删除1个字符。我假设我所引用的内存正在移动一个字节,但我不确定这将如何发生。

0 个答案:

没有答案