Assertion error - dans un prog en C

bonjour, alors voila j’ai un souci avec un de mes prog C au niveau du premier fgetc de la fonction conc() j’ai une “assertion error” a l’execution , je ne sais pas ce que sais , si vous pouviez jeter un oeil a mon prog ca m’aiderais . merci d’avance

sous visual studio j’ai o error o warning


#include <string.h>
#include <stdio.h>
#include <stdlib.h>



/*-------------------fonction de concatenation de deux fichier------*/



void conc(char *nom1 , char *nom2 , char *news , char *mode)
{

int n;	/* detection des erreur a la fermeture du fichier*/
FILE *fp1;	/* pointeur vers le fichier*/
FILE *fp2;	/* pointeur vers le fichier2*/
FILE *pnew;

int i  = 0;
int x , y; 

fp1 = fopen(nom1 , mode);	/* on ouvre le fichier*/
pnew = fopen(news , mode);

while(x != EOF)
	{
	x =fgetc(fp1);
	fputc((char)x , pnew);
	};

n = fclose(fp1);	/* on ferme le fichier1*/

if(n != 0 )
	{
	printf("\nerreur de fermeture du fichier1\n");
	};


fp2 = fopen(nom2 , mode);	/* on ouvre le fichier2*/

fseek(pnew , 0 , SEEK_END);
while(y !=EOF)
	{
	y = getc(fp2);
	putc((char)y , pnew);
	}




n = fclose(fp2);	/* on ferme le fichier1*/
if(n != 0 )
	{
	printf("\nerreur de fermeture du fichier2\n");
	};
};






/*-----------------------------------------------------------------*/
/*----------------------PROGRAMME PRINCIPAL------------------------*/
/*-----------------------------------------------------------------*/

int main()
{
char nom1[20] = "titi.txt"  ,   nom2[20] = "toto.txt" , news[20] = "tata.txt";	/* nom des fichier*/
char *mode = "r+";	/* lecture _ ecriture*/


conc(nom1 , nom2 , news , mode );


return 0;
};

commence par regarder si fp1 et pnew ne sont pas à ‘null’.
c’est d’habitude le contrôle de base après l’ouverture d’un fichier.

si il sont a null c que les fichier n’a pas pu s’ouvrir?

il sont tout les deux a 0x00000

maintenant je n’ai plus les erreur de assertion mais quand j’execute me programme
si j’ai dans le premier fichier azert et le deuxieme uiop j’ai dans le fichier qui contient les chaines concatené ; azerÿuiopÿ. est ce que vous voyez d’ou peuvent provenir les ÿ

merci

le souci c’est que tu ne teste pas la variable que tu extrait du fichier : le ‘x’
il vaut mieux utiliser une boucle do-while

char x;
do{
x = fgetc(fp1);
if(x != EOF)fputc(x , pnew);
}while(x != EOF);

deuxièmement, le mode à l’ouverture des fichiers est différent si tu veux écrire ou lire un fichier.
r+ : pour lire
w+ pour ecrire.

c bon tout marche merci beaucoup jmgchouchou.

a+