web-dev-qa-db-fra.com

Différence entre r + et w + dans fopen ()

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é?

44
yaylitzis

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.

26
haccks

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.

70
Peter
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.

17
invalid_id

Il y a 2 différences, contrairement à r+, w+ volonté:

  • créer le fichier s'il n'existe pas déjà
  • d’abord le tronquer, c’est-à-dire supprimer son contenu
3
perreal

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.

0
Ashwani Bansal