Take the 3 hour differential, that will be plenty as long as your flight is less than 2 hours delayed. But here's an idea, and this worked well for us the one time it was necessary. But this will only work if your flights are on 1 ticket. Before you go to the airport in Charlotte, check on your flight. And not just your flight, but figure out where it is coming from, if that flight is on time, and see if you can figure this back as far as you can during that day. And if there is going to be a significant delay, talk to the airline as soon as you get to Charlotte, explain to them that it looks like your flight is delayed and you will not make your long haul flight, and what will they do for you there to make sure you get to Paris overnight. And the important thing you have to know here to make this work, is you yourself have to know what other options they have in terms of flights, and whether there are seats available. And you will tell this to them, so that they know that you are aware of what they can do. it will really help if you have not yet checked your bags when you do this.
This worked when we had the issue. We were flying Philly->Boston->Zurich->Budapest, an unfortunate routing that we did through Expedia when we were inexperienced, all starting with and code-shared on USAir. We were already miffed since USAir also has a direct Philly to Zurich, and I was prepared to try and get us switched to it anyway, knowing there were a few seats. The day of the trip, there was rain up and down the east coast, thunderstorms, and our first flight had 4 different flights up and down the coast before getting to us. And before leaving for the airport I could see it was a good 90 minutes behind already, meaning we would not make our 90 minute connection in Boston. As soon as we were through security we went to the US Air desk airside (we don't check baggage!) and explained the situation. Attendant looked at us first as if we were trying to pull something, then checked, and saw we were correct. And there was enough time for her to put us on the direct flight to Zurich. Notes--of course this meant an old USAir 767 rather than a nice SwissAir 330 with better service and it was a truly lousy flight, and a 4 1/2 hour layover in Zurich without cash, as we could not update our travel plans now with the bank, but we were there timely,. And we also knew that the Zurich flight from Boston was the last Europe flight from there that night. I checked the next day, and our original Boston flight did in fact land at Boston at about the time the Zurich flight left.