Deux méthodes de réalisation de la fonction de copie de fichiers dans le système Linxu

Prêt à travailler:

  • Fichier source: file_sourse
  • Fichier de destination: file_goal
  • Fichier d'exécution: file_ex.c (les fichiers qui doivent être compilés et exécutés utilisent la commande gcc)
  • Le langage C utilise une bibliothèque standard pour réaliser la fonction de copie

Code principal

	FILE *fp,*fp1;
	int cnt;
	char buf[1024];
	fp=fopen("file_sourse","r");
	fp1=fopen("file_goal","w");
	fcloseall();
	while((cnt=fread(buf,1,sizeof(buf),fp)>0))
	{
	 	fwrite(buf,1,cnt,fp1);
	}

Si vous souhaitez le copier à nouveau, vous devez l'utiliser icifonction fseek

    fseek(fp,0,SEEK_SET);//重新定位到文件起始处
	while((cnt=fread(buf,1,sizeof(buf),fp)>0))
	{
	 	fwrite(buf,1,cnt,fp1);
	}
	fcloseall();

r Ouvrir le fichier en mode lecture, lever une exception si le fichier n'existe pas
r + Ouvrir le fichier en mode lecture et écriture, et lever une exception lorsque le fichier n'existe pas
rs + Ouvrir le fichier en mode lecture et écriture synchrone, notifier le système d'exploitation pour ignorer le cache système (utilisation non recommandée)
w pour ouvrir le fichier sous forme d'écriture, si le fichier n'existe pas, créez-le et écrasez-le s'il existe.
wx Similaire à w, sauf que l'opération sera échoue lorsque le fichier existe.
w + Ouvrez le fichier sous forme de lecture et d'écriture, et créez-le si le fichier n'existe pas., S'il existe, écrasez
a. Ouvrez le fichier sous forme d'ajout. Si le fichier n'existe pas, create
ax. Similaire à a, si le fichier existe, l'opération échouera.
a + Ouvrez le fichier sous forme de lecture et d'écriture. Si le fichier n'existe pas, créez
ax +. Similaire à a +, l'opération échouera si le fichier existe

  • Appel système pour réaliser la fonction de copie

Code principal

	int fd,fd1;
	int cnt;
	char buf[1024];
	fd=open("file_sourse",O_RDONLY);
	fd1=open("file_goal",O_WRONLY | O_CREAT,0644);
	close(fd);
	close(fd1);
	while((cnt=read(fd,buf,sizeof(buf))>0))
	{
	 	write(fd,buf,cnt);
	}

Si vous souhaitez le copier à nouveau, vous devez l'utiliser icifonction lseek

	lseek(fd,0,SEEK_SET);//重新定位到文件起始处
	while((cnt=read(fd,buf,sizeof(buf))>0))
	{
	 	write(fd,buf,cnt);
	}
	close(fd);
	close(fd1);
  • Pour résumer

En combinant les deux méthodes ci-dessus pour la fonction de copie de fichiers, il n'est pas difficile de dessiner les similitudes entre les deux méthodes. Il n'est pas nécessaire de mémoriser par cœur comment utiliser ces méthodes. Grâce à la pratique quotidienne, nous aurons une impression dans nos esprits. , Plus l'utilisation du système LinuxhommeVenez aider, vous deviendrez de plus en plus compétent pour comprendre et même savoir comment l'utiliser.

S'il y a des lacunes, veuillez le signaler, merci! ! !

Je suppose que tu aimes

Origine blog.csdn.net/HG0724/article/details/102466346
conseillé
Classement