Fseek没有在C

时间:2016-05-15 03:58:20

标签: c

我制作了一个程序来读取.csv文件。每一个新行都在' \ n&n;并且每个下一个元素都在','之后。整个代码对我来说很好。我得到了位置(col和line),我试图通过将整个文件读入一个数组来改变这个地方的值,然后使用' i'并试图开始从“我”开始。只更改所需的值,但在调试时我发现arr[i](所选值)与fseek(csvfile, i, SEEK_SET)不在同一个位置。

有人可以告诉我fseek文件如何指向' i'改变价值的地方?

int changeValue(int line, int col, char str[], const char* path)
{
    FILE* csvFile = fopen(path, "r+");
    char arr[VERY_BIG_MEMORY];
    int i = 0;
    int ch = 0;
    int q =0;
    if (!csvFile)
    {
        printf("Can't read the file\nPlease open a file\n");
        return -1;
    }
    initarr(arr, VERY_BIG_MEMORY);
    do
    {
        ch = fgetc(csvFile);
        arr[i] = (char)ch;
        i++;

    } while (ch != EOF);
    fseek(csvFile,0L, SEEK_SET);
    i = 0;
    q = 1;
    while (q < line)
    {
        ch = arr[i];
        if (ch == '\n')
        {
            q++;
        }
        i++;

    }
    q = 1;
    while (q < col)
    {
        ch = arr[i];
        if (ch == ',')
        {
            q++;
        }
        i++;

    }
    q = 0;
    fseek(csvFile,i,SEEK_SET );
    //ch = arr[i];
    //ch = fgetc(csvFile);
    /*while (str[q])
    {
        fputc(str[q], csvFile);
        q++;
    }*/
    fclose(csvFile);
}

0 个答案:

没有答案