Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[СИ]Редактирование записи

12K
09 декабря 2006 года
Belomorkan
59 / / 18.10.2006
Люди почему ета функция не редактирует нужную запись а просто создает еще одну
Код:
void update(FILE *fp)
{
int f;
printf("Vvedite familiuy kotoryuy xotite obnovit':");
scanf("%s",&f);
fseek(fp,(f-1)*sizeof(rec),SEEK_SET);
fread(&rec,1,sizeof(rec),fp);
if(rec.lname==0)
{
printf("Takogo sotrudnika %d net",f);
}
else
{
fprintf(stdout,"\n\t%s %s %c %s",  rec.lname,
                                   rec.fname,
                                   rec.mname[0],
                                   rec.phone);
fseek(fp,(f-1)*sizeof(rec),SEEK_SET);
printf("Vvedite novue dannue:\n");
printf("Vvedite Imja:");
scanf("%s",rec.fname);
printf("Vvedite middl:");
scanf("%s",rec.mname);
printf("Vvedite famil:");
scanf("%s",rec.fname);
printf("Vvedite god:");
scanf("%s",rec.phone);
fwrite(&rec,1,sizeof(rec),fp);
}
}
274
10 декабря 2006 года
Lone Wolf
1.3K / / 26.11.2006
ну так правильно, ты считал запись в структуру, грбуо говоря скопировал. а потом ее переиницилизировал и записал новое значение в определеное место в файл. а старая запись там осталась. тебе сначала надо удалить ее из файла, а потом записывать
да, а что ты хочешь добится этой строчкой?
 
Код:
fseek(fp,(f-1)*sizeof(rec),SEEK_SET);

и вобще, %s - это строка, а у тебя f обьявлено как инт...
12K
10 декабря 2006 года
Belomorkan
59 / / 18.10.2006
Lone Wolf:Я не знаю как удалять из файла эту строчку??? Просто мы только начали, а про удаление ни слова небыло, как это сделать???
274
10 декабря 2006 года
Lone Wolf
1.3K / / 26.11.2006
Честно я сам не уверен что взять и удалить строчку вобще возможно. Я бы делал так(кста совсем недавно дня 2 назад я про это уже писал)
создать новый файл, в него переписать измененую информацию, а потом исходный файл переписать этим.
12K
10 декабря 2006 года
Belomorkan
59 / / 18.10.2006
Тоесть у меня есть файл "1.txt" я делаю "2.txt" новые данные загоняю во второй, а потом переписываю в файл 1. Если это так как я понял, то звучит один вопрос, а как это сделать???
Чем я больше учу Си тем больше понимаю что я ничего вообще незнаю.
Слушай Lone Wolf помоги мне с задачей.Мне вот надо написать удаление записи из файлаа, и редактирование записи, как удаление делать в файле, через free(); чтоли?
12K
11 декабря 2006 года
Belomorkan
59 / / 18.10.2006
Люди я непойму почему в моей функции редактирования запись не редактируется а просто записывается еще одна.Помогите исправить, я незнаю почему так может указатель неправильно а может и fwrite();
Вот так выглядит структура, могу выложить весь файлик
struct record {
char fname[15+1]; /* first name + NULL */
char lname[20+1]; /* last name + NULL */
char mname[10+1]; /* middle name + NULL */
char phone[9+1]; /* phone number + NULL */
} rec;

Код:
void update(FILE *fp)
{
char tmp_lname[20+1];
printf("Vvedite familiuy kotoryuy xotite obnovit':");
scanf("%s",&tmp_lname);
fread(&rec,1,sizeof(rec),fp);
fseek(fp,0,SEEK_SET);
if(rec.lname==0)
{
printf("Takogo sotrudnika net");
}
else
{
fprintf(stdout,"\n\t%s %s %c %s",  rec.lname,
                                   rec.fname,
                                   rec.mname[0],
                                   rec.phone);
fseek(fp,0,SEEK_SET);
printf("Vvedite novue dannue:\n");
printf("Vvedite Imja:");
scanf("%s",rec.fname);
printf("Vvedite middl:");
scanf("%s",rec.mname);
printf("Vvedite famil:");
scanf("%s",rec.fname);
printf("Vvedite god:");
scanf("%s",rec.phone);
fwrite(&rec,1,sizeof(rec),fp);
}
242
12 декабря 2006 года
Оlga
2.2K / / 04.02.2006
[COLOR=red]Перестань дублировать темы, это уже не первый раз. Давай темам нормальные названия, например: [COLOR=black][C]редактирование записи в файле[/COLOR][/COLOR]

[COLOR=red]За нарушение правил форума -10.[/COLOR]
[COLOR=red]При -30 - бан на неделю, так что просьба правила не нарушать.[/COLOR]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог