C 如何删除二进制文件中的元素?
我认为我应该将所有文件读入程序,然后删除文件并用相同的名称再次打开,然后我应该使用例如函数for和C 如何删除二进制文件中的元素?,c,file,binary,structure,element,C,File,Binary,Structure,Element,我认为我应该将所有文件读入程序,然后删除文件并用相同的名称再次打开,然后我应该使用例如函数for和if(!strcmp(,)我应该写入结构中的每个元素。我每种方法都试过,但都不管用。有人能帮我吗?我将非常感激 void usun_element() { int i; char nazwa[100]; FILE *fp; if((fp=fopen("katalog.bin", "rb" ))==NULL) { printf("Brak pli
if(!strcmp(,)
我应该写入结构中的每个元素。我每种方法都试过,但都不管用。有人能帮我吗?我将非常感激
void usun_element()
{
int i;
char nazwa[100];
FILE *fp;
if((fp=fopen("katalog.bin", "rb" ))==NULL)
{
printf("Brak pliku katalog na dysku.\n");
return;
}
else
printf("Wpisz nazwe, ltora chcesz usunac z listy: ");
scanf("%s", &nazwa);
otworz();
remove("katalog.bin");
otworz();
i=0;
while(i<ost)
{
if(!strcmp(nazwa,kat[i].nazwa))
{
fwrite(&kat[i].nazwa, sizeof(kat), 1, fp);
fwrite(&kat[i].typ, sizeof(kat), 1, fp);
fwrite(&kat[i].rodzaj, sizeof(kat), 1, fp);
fwrite(&kat[i].posiadane, sizeof(kat), 1, fp);
}
else
{
ost=i-1;
}
i++;
}
}
void usun\u元素()
{
int i;
查尔纳兹瓦[100];
文件*fp;
如果((fp=fopen(“katalog.bin”,“rb”))==NULL)
{
printf(“Brak pliku katalog na dysku.\n”);
返回;
}
其他的
printf(“Wpisz nazwe,ltora chcesz usunac z listy:”);
scanf(“%s”&nazwa);
otworz();
移除(“katalog.bin”);
otworz();
i=0;
while(i将格式说明符与参数匹配。
使用正确的sizeof()。
怀疑ost=i-1;
。可能不需要
static const char *EnterNameToDelete = "Wpisz nazwe, ltora chcesz usunac z listy: ";
fputs(EnterNameToDelete, stdout);
// scanf("%s", &nazwa);
scanf("%99s", nazwa); // drop the &
if(!strcmp(nazwa, kat[i].nazwa)) {
// use the correct sizeof()
if (fwrite(&kat[i].nazwa , sizeof(kat[i].nazwa) , 1, fp) == 0 ||
fwrite(&kat[i].typ , sizeof(kat[i].typ) , 1, fp) == 0 ||
fwrite(&kat[i].rodzaj , sizeof(kat[i].rodzaj) , 1, fp) == 0 ||
fwrite(&kat[i].posiadane, sizeof(kat[i].posiadane), 1, fp)) {
Handle_IO_Error();
}
}
如果OP发布了声明和结构,这会很有帮助。不要害羞,给我们看看你的代码。没有其他方法可以理解你到底想要什么。达博是对的:)我用了一些不是英语的单词,我想你理解起来会有点麻烦;)fwrite(&kat[I],sizeof(*kat),1,fp);
如果是固定长度字符串。