Dans fopen("myfile", "r+")
, quelle est la différence entre le "r+"
et "w+"
mode ouvert? Je lis ceci:
"r"
Ouvre un fichier texte en lecture."w"
Ouvrez un fichier texte pour l'écrire, tronquez un fichier existant à une longueur nulle ou créez le fichier s'il n'existe pas.
"r+"
Ouvrez un fichier texte pour la mise à jour (c'est-à-dire pour la lecture et l'écriture)."w+"
Ouvrez un fichier texte pour la mise à jour (lecture et écriture), en tronquant le fichier à zéro s'il existe ou en créant le fichier s'il n'existe pas.
Je veux dire que la différence est que si j'ouvre le fichier avec "w+"
, le fichier sera d'abord effacé?
La principale différence est w+
tronque le fichier à la longueur zéro s'il existe ou crée un nouveau fichier s'il ne le fait pas. Tandis que r+
_ ne supprime pas le contenu et ne crée pas de nouveau fichier s'il n'existe pas.
Essayez ces codes et vous comprendrez:
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("test.txt", "w+");
fprintf(fp, "This is testing for fprintf...\n");
fputs("This is testing for fputs...\n", fp);
fclose(fp);
}
et puis cela
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("test.txt", "w+");
fclose(fp);
}
Puis ouvrez le fichier test.txt
et voir ce qui se passe. Vous verrez que toutes les données écrites par le premier programme ont été effacées.
Répétez cette opération pour r+
et voir le résultat. J'espère que vous allez comprendre.
Tous les deux r+
et w+
peut lire et écrire dans un fichier. Toutefois, r+
ne supprime pas le contenu du fichier et ne crée pas de nouveau fichier s'il n'existe pas, alors que w+
supprime le contenu du fichier et le crée s'il n'existe pas.
r = read mode only
r+ = read/write mode
w = write mode only
w+ = read/write mode, if the file already exists override it (empty it)
Donc oui, si le fichier existe déjà, w + l'effacera et vous donnera un fichier vide.
Il y a 2 différences, contrairement à r+
, w+
volonté:
r + Le fichier existant est ouvert jusqu'au début pour la lecture et l'écriture. w + Identique à w, sauf pour la lecture et l'écriture.