C программирование, функция удаления
Попробуйте использовать fseek для изменения имени, но он не может вернуть желаемый результат, то есть имя не может быть изменено и остается прежним
struct phonebook { char name[20]; };
struct phonebook a;
char temp[20];
cpPtr=fopen("name.txt","rb");//open the file
while(fread(&a,sizeof(a),1,cpPtr)==1){
printf("Please enter name :\n");//require user to enter name
scanf("%s",&temp);//temporary variable
fflush(stdin);
if(stricmp(a.name,temp)==0){
printf("NAME :%s\n",a.name);
else
printf("The name is not exist");
getch();
}
printf("Please enter new NAME :");
scanf("&s",a.name);
fflush(stdin);
fseek(cpPtr,-sizeof(a),SEEK_CUR);//is there any wrong with seek?
fwrite(&a,sizeof(a),1,cpPtr);
fclose(cpPtr);
printf("Name is modified");
getch();
system("cls");
}
1 ответ
Вы открываете файл только для чтения. Вы должны открыть файл в режиме чтения-записи, если вы хотите и читать, и писать.
fopen("name.txt","r+b"); // open read+write