! in input buffer in comparison in if statement : I am not clear with the usage of ! in input buffer comparison in sample code as below 

    /*GLOBAL VARIABLES*/
    int pipe_count=0, fd;
    static char* args[512];
    char *history_file;
    char input_buffer[1024];
    
    int main()
    {
        int status;
        char ch[2]={"\n"};
        getcwd(current_directory, sizeof(current_directory));
        signal(SIGINT, sigintHandler);
       while (1)
        {
          clear_variables();
          prompt();
          fgets(input_buffer, 1024, stdin);
          if(strcmp(input_buffer, ch)==0)
                {
                  continue;
                }
          if(input_buffer[0]!='!')
                {
                    fileprocess();
                    filewrite();
                }
          len = strlen(input_buffer);
          input_buffer[len-1]='\0';
          strcpy(his_var, input_buffer);
          if(strcmp(input_buffer, "exit") == 0)
                {
                  flag = 1;
                  break;
                }

I am not able to understand `if(input_buffer[0]!='!')`
this statement  what does '!' mean in comparison does it signify a NULL 
or it is some thing else. The full code is very big  this is just one part which I am not clear with.I checked the ASCII value of ! from here http://ee.hawaii.edu/~tep/EE160/Book/chap4/subsection2.1.1.1.html but I am not able to understand what is input_buffer[0] being compared against by using ! in code for a NULL etc I as far as I understand it is NULL,'\0',' ' this kind of `input_buffer[0]!='!'`thing is not clear to me as to what it gets translated to ?