In the whole Mahaabhaarat, Karn has been boasting all the time for himself that he was a better archer than Arjun. In the whole Mahaabhaarat he always keeps instigating Duryodhan to break the war with Paandav, because he is not happy with Shakuni's cheating tactics - Baaranaavat incident, dice games etc. He says - "We are Kshatriya and we should behave like a Kshatriya." And since there was no war for long time he always looked for an opportunity to fight with Arjun, because he thought that he could defeat Arjun.
He had developed enmity with Paandav since his childhood when Drone refused to educate him in his Gurukul and more specifically with Arjun when he heard that to declare Arjun the best archer, Drone asked Eklavya's right thumb in Guru Dakshinaa. Drone proved this when he demonstrated the skills of Kaurav and Paandav to Dhritraashtra in Rangshaalaa. At that time Karn also wanted to demonstrate his skills but Soorya Dev set and he could not show his skills. (Perhaps Soorya Dev did not want his son to be insulted by Indra's son.)
Although he always had a desire to show his warrior skills against Arjun, because he always considered himself a better archer than him. Later in his life time he got 4 occasions to face and defeat Arjun, but the story of his life says something else. Let us see what does it tell - that Karn was not a greater archer than Arjun?
Karn's First Defeat from Arjun - Draupadee's Swayamvar
Karn's first defeat from Arjun was in Draupadee's Swayamvar. When Karn rose to pierce the eye of the fish, and Draupadee insulted him saying that she would not select a Soot Putra as her husband, he just threw the bow and sat down. Later when Arjun got married to Draupadee, many kings came to fight with Arjun. Karn also got opportunity to fight with him, so he also ran to fight with him although he did not know him at that time that he was Arjunm because he was in a Braahman's disguise. But he got fainted while fighting. Later he admired the Braahman for his skill in weapons and went away. When Duryodhan asked him - "When you had got the opportunity to fight with Arjun why didn't you defeat him?" Karn replied - "I was not ready for this fight."
Karn's Second Defeat from Arjun - Ghosh Yaatraa
Karn's second defeat from Arjun was when Duryodhan went for Ghosh Yaatraa to tease
Paandav and camped near Paandav's camp. When Dev Raaj Indra heard this, he sent Gandharv
Raaj Chitrarath, to help Paandav. Chitrarath went there and created a scene in which
he caught Duryodhan and was about to punish him, that Arjun and Bheem came there and got Duryodhan released from him. When Arjun and Bheem came there, Karn was nowhere to be seen. Duryodhan got very disappointed seeing this that in spite of Karn being with him his enemies came to release him from Gandharv Raaj.
Karn's Third Defeat from Arjun - Viraat War
His third defeat from Arjun was at Viraat War. When Bheem had killed Keechak on account of Draupadee, the news reached Hastinaapur. Duryodhan found this a good opportunity to recognize Paandav living incognito and send them again in exile, so he managed Susharmaa to take Viraat's cows away from his city. This prompted Viraat to recover his cows from Susharmaa, so he went with Yudhishthir, Bheem, Nakul and Sahadev. Soon Duryodhan attacked Viraat. As all had gone to recover cows from Susharmaa, only Viraat's yonger son Uttar was present in the palace. So he had to go to fight with Kaurav army. Somehow Arjun went with him. Although Uttar got scared to see Kaurav army, but Arjun took him there and he himself fought with them. At that time also, Arjun fought with Karn twice but both times Karn had to retreat.
In Viraat war also---
--Karn insists Duryodhan for war and claims to be superior over Arjun. ---> Section XLVIII
--Kripaa criticizes Karn for his decision to fight alone with Arjun;
also narrates the achievements and superiority of Arjun over Karn and
other warriors. ---> Section XLIX
--Ashwatthaamaa also criticizes Karn for his self-boasting and narrates superiority of Arjun over other warriors. ---> Sectiion L
--Discussion among Bheeshm, Drone and Duryodhan over war. Bheeshm backs
Karn saying Karn used such words to raise our drooping courage; but
also saying that what Ashwattthaamaa and Kripaa said was right. ---> Section LI
--Karn ran away from battle field defeated by Arjun. ---> Section LIV
Karn in Kuru Kshetra War
In Kuru Kshetra war, one can easily say that Karn had several curses and because of them he had to die at that time and could never win Arjun, but looking at the previous incidents, it becomes clear that even if he had no curse, he could not have won Arjun. Not only Arjun, even when he faced Bheem in Kuru Kshetra war, he could not win him. Bheem gained upper hand approximately 25 times over Karn; and Karn only 2-3 times. This is another matter that by then he had known that Paandav were his brothers and he promised Kuntee not to kill Yudhishthir, Bheem, Nakul and Sahadev, so he did not fight with them in his full capacity.
Everywhere Karn had boasted himself as the better archer and warrior, but could never show his ability to fight with Arjun. He always got defeated by him. WHY?