прыгнув на нужную строку и переопределив первую букву внутри нее в C - PullRequest
1 голос
/ 11 марта 2011

привет, я пытаюсь записать файл в нужный номер строки, используя язык программирования c и по неизвестным причинам это не пишется это мой проверочный код:

int main()
{
    int x;
    int counter = 0;
    char buffer[MAX];
    FILE* fp = fopen("sale_day.txt","w");
    fprintf(fp,"5 orange 11\n");
    fprintf(fp,"4 pelephone 222\n");
    fprintf(fp,"3 mirs 4000\n");
    fprintf(fp,"2 cellcom 302\n");
    fprintf(fp,"1 tmobile 500\n");
    fclose(fp);
    fp = fopen("sale_day.txt","r+");
    while (counter < 2)
    {// jumping two rows
        fgets(buffer,MAX,fp);// i tried using fscanf which didnt help aswell
        counter++;
    }
    fflush(fp); // i tried with and without still doesnt work
    fputs("$",fp);
    fflush(fp); // i tried with and without still doesnt work
    fclose(fp);
}

Я ожидаю получить:

5 orange 11
4 pelephone 222
$ mirs 4000
2 cellcom 302
1 tmobile 500

по какой-то причине в файле "sale_day.txt" это выглядит следующим образом

5 orange 11
4 pelephone 222
3 mirs 4000
2 cellcom 302
1 tmobile 500

Даже если я отлаживаю его, вместо 3 цифр отображается «$»

заранее спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Код работает просто отлично, также без fflush -линий. После запуска программы строка 3 изменяется следующим образом:

До:

3 mirs 4000

После того, как:

$ mirs 4000

Я запустил ваш код, как есть, только с этим сверху:

#include <stdio.h>
#define MAX 255
0 голосов
/ 11 марта 2011

Чего вы ожидаете? Когда я запускаю ваш код, я получаю:

5 orange 11
4 pelephone 222
$ mirs 4000
2 cellcom 302
1 tmobile 500

Это совершенно верно, учитывая то, что вы кодировали: прочитайте две строки (оставив вас в третьей строке) и напишите $ символ.

Обратите внимание, что операции записи файла перезаписывают существующие данные файла или добавляют новые данные в конец файла. Они не вставляют данные (что могло быть ожидаемой вами операцией).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...