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);
}
}
[СИ]Редактирование записи
Люди почему ета функция не редактирует нужную запись а просто создает еще одну
да, а что ты хочешь добится этой строчкой?
Код:
fseek(fp,(f-1)*sizeof(rec),SEEK_SET);
и вобще, %s - это строка, а у тебя f обьявлено как инт...
Lone Wolf:Я не знаю как удалять из файла эту строчку??? Просто мы только начали, а про удаление ни слова небыло, как это сделать???
создать новый файл, в него переписать измененую информацию, а потом исходный файл переписать этим.
Чем я больше учу Си тем больше понимаю что я ничего вообще незнаю.
Слушай Lone Wolf помоги мне с задачей.Мне вот надо написать удаление записи из файлаа, и редактирование записи, как удаление делать в файле, через free(); чтоли?
Вот так выглядит структура, могу выложить весь файлик
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);
}
{
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);
}
[COLOR=red]За нарушение правил форума -10.[/COLOR]
[COLOR=red]При -30 - бан на неделю, так что просьба правила не нарушать.[/COLOR]