Wenn ich diesen Code allein (mit einer Hauptfunktion) verwende, funktioniert es.Warum funktionieren die Funktionen rename() und remove() nicht?
Aber wenn ich diese Funktion in meinem Projekt gehören, gebe es zwei Dateien:
annuaire_client.txt
und annuaire1.txt
Der Code verwendet wird, bereitgestellt unter:
void delete_client(){
FILE *annuaire_client,*annuaire1;
printf("\t\t\t\t\t\t\t\tNum de compte a supprimee: ");
int delete_line;
scanf("%d",&delete_line);
char ch;
int line = 1;
//ouvrir le fichier original
annuaire_client = fopen("annuaire_client.txt", "r");
ch = getc(annuaire_client);
//retour au debut
rewind(annuaire_client);
//ouvrir nouveau fichier
annuaire1 = fopen("annuaire1.txt", "w");
while (ch != EOF)
{
if (ch == '\n')
{
line++;
}
//sautez la line a supprimer
if (line != delete_line)
{
//copier les lines vers annuaire1.txt
fprintf(annuaire1,"%c",ch);
}
ch = getc(annuaire_client);
}
fclose(annuaire1);
fclose(annuaire_client);
remove("annuaire_client.txt");
rename("annuaire1.txt","annuaire_client.txt");
}
der entsandte Code zu verwenden, ist ein paar wichtigen Elemente fehlen: 1) '# include' 2) immer überprüfen (= NULL) der zurückgegebene Wert von 'fopen()' um sicherzustellen, dass die Operation erfolgreich war 3) überprüfe immer (== 0) den zurückgegebenen Wert von 'rename()' um sicherzustellen, dass die Operation erfolgreich war. 4) überprüfe immer (== 0) den zurückgegebenen Wert von 'remove()', um sicherzustellen, dass der Vorgang erfolgreich war. Jedes Mal, wenn ein zurückgegebener Systemfunktions-Wert anzeigt, dass die Funktion fehlgeschlagen ist, rufen Sie: 'perror()' auf, da dies eine eingeschlossene Textzeichenfolge und die Fehlermeldung ausgibt, die nach Ansicht des Betriebssystems der Grund für den Funktionsaufruf ist. –
user3629249