"Implicit declaration" warning

18,223

Solution 1

Problem #1:

warning: ‘mainp’ may be used uninitialized in this function

You need to allocate memory for the array of arrays first.

char **mainp = malloc(sizeof(char*)*2);

Problem #2:

warning: implicit declaration of function ‘scanf’
warning: incompatible implicit declaration of built-in function ‘scanf’

You need to include stdio.h at the top of your file:

#include <stdio.h>

Problem #3: (Not included in your compiling warnings)

Remember to free both the allocated array members and also the array of array address.

Solution 2

gcc expects this line at the beginning of your file:

#include <stdio.h>

and a declaration of mainp like this one:

char *mainp[2];
Share:
18,223
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    For this code:

    int i=0; char **mainp;
    for(i=0;i<2;++i)
    {
        mainp[i]=malloc(sizeof(char)*200);
        if(!scanf("%[^#],#",mainp[i]))
            break;
       if(i<2)
           scanf("%[^#],#",mainp[i]);
    }
    

    GCC emits the warnings:

    warning: implicit declaration of function ‘scanf’
    warning: incompatible implicit declaration of built-in function ‘scanf’
    warning: ‘mainp’ may be used uninitialized in this function
    

    And I get a segmentation fault at runtime

    input:(P>Q),(Q>R),-R#-P output: (P>Q),(Q>R),-R (empt slot)

    i expected to give me (P>Q),(Q>R),-R -P //where should i fix in my code such that it gives me expected //output