Как изменять данные о реестре в C?

так как это, Поскольку я могу изменять данные о реестре, пробовало следующего способа:

    gets(search); // nombre del dato que queremos modificar
    fread(&producto,sizeof(_Registro),1,pf);
        while(!feof(pf)){
            if (strcmp(search,producto.nombre)==0){ //aqui obtenemos el dato en el fichero en la posición en la que se encuentra.

                printf("Nombre del Producto %s\n",producto.nombre); //lo imprimimos
                printf("Nuevo Nombre del Producto: ");
                gets(producto.nombre); //pido el nuevo nombre
                fflush(stdin);                  
                fwrite(&producto,sizeof(_Registro),1,pf); // y sobre escribo el fichero
            }

но не это на escribe:/, я искал, как делание этого другой формой, но не достиг успеха, перед рукой спасибо и привета.

1
задан 10.04.2016, 19:36
1 ответ
fread(&producto,sizeof(_Registro),1,pf);
while(!feof(pf)){

Если fread будь вне цикла ты не будешь реализовывать больше, чем единственное чтение, потом единственное, что сможет делать твою программу, состоит в том, чтобы сравнивать этот реестр снова и снова, что пахнет бесконечным циклом.

С другой стороны, как только ты сделал чтение внутренний указатель файла изменяет положение. Если твоя идея будет sobreescribir информация, у тебя будет, что hechar для назад вышеупомянутого указателя. Чтобы это делать ты можешь смотреть ftell, чтобы знать положение внутри файла и fseek чтобы менять положение указателя.

И, чтобы заканчиваться, ты должен знать, что fflush только было бы нужно использовать, чтобы обрабатывать буферы вывода и в fflush(stdin), stdin это буфер ввода. В этом случае результат неопределен, потом не кажется хорошей идеей верить в то, что эта функция ты функционирует правильно.

1
ответ дан 24.11.2019, 14:36