Content
Altres seccionsAlguna vegada us heu trobat amb "formats de coma flotant no enllaçats" error en un programa C o C ++? A continuació s’explica el motiu d’aquest error i també la solució. Tingueu en compte que el compilador utilitzat és Turbo C / Borland C.
Passos
Analitzeu el llistat de programes següent i, després de crear amb èxit el programa, apareix l'error de temps d'execució esmentat anteriorment.
Programa primer
- Llista d'un programa a continuació.
- int main () {
struct ALUMNE {
int rollno;
char stdname;
percentatge de flotació;
} * s1;
printf (" Introduïu dades de l'estudiant:");
scanf ("% d% s% f",
& s1-> rollno,
s1-> nom std,
& s1-> percentatge);
printf (" nLes dades introduïdes són:");
printf ("Roll:% d, nom:% s, percentatge:% f",
s1-> rollno,
s1-> nom std,
s1-> percentatge);
getch ();
retorn 0;
} - El programa C anterior s’escriu i es compila en Turbo C. Quan s’executa aquest programa, el compilador mostra el següent error,
Scanf: formats de punt flotant no enllaçats i el programa es finalitza de manera anormal. - Això passa a causa de la variable * s1, que és un indicador de l'estructura "STUDENT", en què el programador havia definit una variable "float" anomenada "percentatge". Significa que s'ha trobat un error quan el programa va intentar llegir un valor per al tipus de dades flotant mitjançant un punter per estructurar. Quan s'executa el programa, el compilador va mostrar un error en temps d'execució a la línia scanf ("% f", ...% s1-> percentatge).
- Pot passar quan utilitzem Borland C / C ++ o TurboC / C ++ com a compilador. "Els formats de coma flotant no estan enllaçats" és un error d'execució de Borland (Borland C o C ++, Turbo C o C ++). Els compiladors de Borland no s’enllacen a la biblioteca de punt flotant (f-p) tret que ho necessitem. Per tant, per força hem d'afegir qualsevol funció de coma flotant (f-p) quan tenim "% f" o altres formats de coma flotant (f-p) en les trucades scanf () o printf ().
- int main () {
-
Per solucionar aquest error, truqueu a una funció de coma flotant (f-p) o simplement afegiu un enllaç d’un fitxer, que conté almenys una funció de coma flotant (f-p). Per fer-ho, una solució complicada podria ser definir una funció fictícia en algun lloc del fitxer font, però no la crideu:- maniquí buit (flotador * a) {
flotador b = * a; // realitzar algun accés flotant
maniquí (& b); // cridant una funció de coma flotant
} - No ha de ser en un mòdul amb el programa principal, sempre que estigui en un mòdul que s’inclourà a l’enllaç. Per tant, el programa anterior s’ha d’escriure de la següent manera:
- maniquí buit (flotador * a) {
Llistat dos del programa
-
Programa que enumera dos a continuació.- maniquí buit (float * a) {
flotador b = * a; // realitzar algun accés flotant
maniquí (& b); // cridant una funció de coma flotant
}
int main () {
struct ALUMNE {
int rollno;
char stdname;
percentatge de flotació;
} * s1;
printf (" Introduïu dades de l'estudiant:");
scanf ("% d% s% f",
& s1-> rollno,
s1-> nom std,
s1-> percentatge);
printf (" nLes dades introduïdes són:");
printf ("Roll:% d, nom:% s, percentatge:% f",
s1-> rollno,
s1-> nom std,
s1-> percentatge)
getch ();
retorn 0;
} - Al programa anterior, "dummy" és una funció definida per l'usuari. Podeu posar qualsevol nom a aquesta funció en lloc de "fictici". De la mateixa manera, "a" i "b" són noms de variables, que podeu canviar.
- Això es deu al fet que els compiladors C / C ++ de Turbo i Borland de vegades deixen de banda el suport de punt flotant i utilitzen la versió en punt flotant de printf i scanf per estalviar espai en sistemes més petits. La trucada fictícia a una funció de coma flotant obligarà el compilador a carregar el suport de coma flotant i resoldre el problema original.
- maniquí buit (float * a) {
-
Una opció més neta és habilitar l’enllaç de biblioteca de punt flotant en Turbo C / C ++ o Borland C / C ++ des de les opcions d’enllaç per a que la biblioteca inclogui el punt flotant.