Переписать файл на C, используя fseek - PullRequest
0 голосов
/ 25 ноября 2018

Я читаю текст из файла построчно и разделяю строки с помощью strtok, после чего я помещаю их в массив указателей и хочу перезаписать строку вывода в тот же файл.

Для первой строки это работает, но для других строк - в выходном текстовом файле всегда отсутствует первый символ.Я думаю, что должно быть что-то не так с позицией указателя файла, но я не понимаю.

int main(void){
    long pos = 0;
    char *token=NULL;
    char *list_text[100];

    char array[100]={0};

    FILE *file;

    file = fopen("list.txt", "r+");

    pos = ftell(file);

//read file in line by line

    while(fgets(array,100,file) != NULL){
        int i = 0;
        int j = 0;


//split string

        token = strtok(array," ");

        while(token != NULL) {
            printf("Token: %s\n", token);
            list_text[i++] = token;
            token = strtok(NULL," ");
            j++;
            }

//rewrite in file       

                fseek(file, pos, SEEK_SET);
                for (int i= 0; i < j; i++){
                fprintf(file, "%s ", list_text[i]);
                }

                fflush(file);
                pos = ftell(file);

                for (int i = 0; i < j; i++){        //reset
                    list_text[i] = 0;
                }

    }

    fclose(file);

   return(EXIT_SUCCESS);
}
...