Я хочу контролировать расположение указателя файла - PullRequest
0 голосов
/ 04 октября 2019

Я хочу найти повторяющиеся целые числа и заменить их позиции пустым пространством. Это моя домашняя работа. Но я не решил эту проблему. Мой код

int main(){

    int control_integer;
    int temp_integer;
    int flag = 0;
    int location;
    char space = ' ';
    char control_end_of_file;

    FILE *fp,*tp;

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

    while(!feof(fp))
    {

        fscanf(fp,"%d",&control_integer); 
        printf("control_integer: %d\n",control_integer );

        while(!feof(fp)){

            fscanf(fp,"%d",&temp_integer);
            printf("temp_integer = %d\n",temp_integer );

            if (temp_integer == control_integer)
            {
                flag = 1;
                printf("girdi integer: %d\n",temp_integer );
                fprintf(fp, "  %c ",space );
            }
        }
    }
    return 0;
}

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

1 Ответ

0 голосов
/ 04 октября 2019

Сначала я беру элемент в файле, ...

Я думаю, что в этом случае int x; x = getc() достаточно. Например:

while((x = getc(fp)) != EOF){printf("do something");};
...