Comment réparer l'erreur "Formats à virgule flottante non liés" dans Turbo C / Borland C?

«Formats à virgule flottante non liés» est une erreur d'exécution Borland (Borland C ou C ++, Turbo C ou C ++).
Avez-vous déjà rencontré l' erreur «formats en virgule flottante non liés» dans un programme C ou C ++? Vous trouverez ci-dessous la raison de cette erreur et également la solution. S'il vous plaît noter: Le compilateur utilisé est Turbo C / Borland C
Analysez la liste de programmes suivante et après la création réussie du programme, l'erreur d'exécution mentionnée ci-dessus apparaît.
PROGRAMME UN
- 1Liste des programmes ci-dessous.
- int main () {
struct STUDENT {
int rollno;
char stdname [20];
pourcentage flottant;
} * s1;
printf ("\ Entrez les détails de l'élève:");
scanf ("% d% s% f",
& s1-> rollno,
s1-> stdname,
& s1-> pourcentage);
printf ("\ nLes détails saisis sont:");
printf ("Rouleau:% d, Nom:% s, Pourcentage:% f",
s1-> rollno,
s1-> stdname,
s1-> pourcentage);
getch ();
return 0;
} - Le programme C ci-dessus est écrit et compilé dans Turbo C. Lorsque ce programme est exécuté, le compilateur affiche l'erreur suivante,
Scanf: formats en virgule flottante non liés et le programme se termine anormalement. - Cela se produit à cause de la variable * s1, qui est un pointeur vers la structure "STUDENT", dans laquelle le programmeur avait défini une variable "float" nommée "pourcentage". Cela signifie qu'une erreur a été trouvée lorsque le programme a essayé de lire une valeur pour le type de données float à l'aide d'un pointeur vers la structure. Lorsque le programme est exécuté, le compilateur, affiche une erreur d'exécution à la ligne scanf ("% f",...% s1-> pourcentage).
- Cela peut arriver lorsque nous utilisons Borland C / C ++ ou TurboC / C ++ comme compilateur. «Formats à virgule flottante non liés» est une erreur d'exécution Borland (Borland C ou C ++, Turbo C ou C ++). Les compilateurs de Borland ne se lient pas dans la bibliothèque en virgule flottante (fp) sauf si nous en avons besoin. Par conséquent, de force, nous devons ajouter une fonction à virgule flottante (fp) lorsque nous avons "% f" ou d'autres formats à virgule flottante (fp) dans les appels scanf () ou printf ().
- int main () {
- 2Pour corriger cette erreur, appelez une fonction en virgule flottante (fp) ou ajoutez simplement le lien d'un fichier, qui contient au moins une fonction en virgule flottante (fp). Pour ce faire, une solution de piratage pourrait être de définir une fonction factice quelque part dans un fichier source mais ne l'appelez pas:
- vide factice (float * a) {
float b = * a; // exécute un
factice d' accès flottant (& b); // appel d'une fonction en virgule flottante
} - Il n'est pas nécessaire qu'il soit dans un module avec le programme principal, tant qu'il se trouve dans un module qui sera inclus dans le lien. Par conséquent, le programme ci-dessus doit être écrit comme suit:
- vide factice (float * a) {

Avez-vous déjà rencontré l'erreur «formats en virgule flottante non liés» dans un programme C ou C ++?
PROGRAMME LISTE DEUX
- 1Programme énumérant deux ci-dessous.
- vide factice (float * a) {
float b = * a; // exécute un
factice d' accès flottant (& b); // appel d'une fonction à virgule flottante
int main () {
struct STUDENT {
int rollno;
char stdname [20];
pourcentage flottant;
} * s1;
printf ("\ Entrez les détails de l'élève:");
scanf ("% d% s% f",
& s1-> rollno,
s1-> stdname,
s1-> pourcentage);
printf ("\ nLes détails saisis sont:");
printf ("Rouleau:% d, Nom:% s, Pourcentage:% f",
s1-> rollno,
s1-> stdname,
s1-> pourcentage)
getch ();
return 0;
} - Dans le programme ci-dessus, "factice" est une fonction définie par l'utilisateur. Vous pouvez donner n'importe quel nom à cette fonction au lieu de "factice". De même, "a" et "b" sont des noms de variables que vous pouvez modifier.
- En effet, les compilateurs Turbo et Borland C / C ++ laissent parfois de côté la prise en charge de la virgule flottante et utilisent une version non flottante de printf et scanf pour économiser de l'espace sur les systèmes plus petits. L'appel factice à une fonction en virgule flottante forcera le compilateur à charger le support en virgule flottante et à résoudre le problème d'origine.
- vide factice (float * a) {
- 2Une option plus propre consiste à activer la liaison de bibliothèque en virgule flottante dans turbo c / c ++ ou borland c / c ++ à partir des options de l'éditeur de liens pour que la bibliothèque inclue la virgule flottante.
Lisez aussi: Comment activer Microsoft Office sur PC ou Mac?
En parallèle