C Programming - Structures, Unions, Enums - Discussion

Discussion Forum : Structures, Unions, Enums - Point Out Errors (Q.No. 5)
5.
Point out the error in the program?
#include<stdio.h>

int main()
{
    struct emp
    {
        char name[20];
        float sal;
    };
    struct emp e[10];
    int i;
    for(i=0; i<=9; i++)
        scanf("%s %f", e[i].name, &e[i].sal);
    return 0;
}
Error: invalid structure member
Error: Floating point formats not linked
No error
None of above
Answer: Option
Explanation:

At run time it will show an error then program will be terminated.

Sample output: Turbo C (Windows)

c:\>myprogram
                                                          
Sample
12.123

scanf : floating point formats not linked 
Abnormal program termination 

Discussion:
27 comments Page 2 of 3.

Sanjeev said:   1 decade ago
&e[i].sal will return an address which is an int and we are using %f in printf to print this is the reason for having floating point format not linked error.

Prakash said:   1 decade ago
Did it in gcc? float value is changed?

Input-vector
22.6245.

Output- vector
0.0022.6245 0.00..

Markpravo said:   1 decade ago
Floating format not linked ?

Rohit said:   1 decade ago
The pgm will work 100% correctly. There is no prob of linker.

Preethi said:   1 decade ago
What does it mean "floating point formats not linked" ?

Nidhinpradeep said:   1 decade ago
Here no comma seperating %s ND % f.
So floating format is not linked.

Ravindra bagale said:   1 decade ago
In pc floats are computed through some hardware implementation, i.e.floating point units. When you uses array of structure which contains float values, then this error will come. This error comes because of the format of value -storage of structure.

We can remove this error by explicitly calling the floating point format linker.

Solution is- add following code in your source file, don't call it, it automatically get call when error arises.

static void forcefloat(float *p)
{
float f = *p;
forcefloat(&f);
}

Nagaraj said:   1 decade ago
Ya, it doesn't support float, we have to cast inoder to change it to float.

K.maheswari said:   1 decade ago
Why it dsn 't support floating points ?

Surender said:   1 decade ago
Please friend don't use Turbo C IDE/Compiler.
Its not a standard complier.
Better you use borland C++, Visual C++, GCC.


Post your comments here:

Your comments will be displayed after verification.