我制作了一个程序来读取.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);
}