c - '!'在输入缓冲区中与 if 语句中的比较

标签 c string gcc char

我不清楚以下示例代码中输入缓冲区比较中 ! 的用法

/*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;
            }

我无法理解if(input_buffer[0]!='!')

在此语句中,'!' 的含义是什么?相比之下,它是否表示 NULL 或者是别的东西。完整代码很大,这只是我不太清楚的一部分。

我检查了 here! 的 ASCII 值但我无法理解在 NULL 等代码中使用 !input_buffer[0] 进行比较我理解它是NULL'\0'' '。这种 input_buffer[0]!='!' 我不清楚它会被翻译成什么?

不是在询问关于这里的不等于运算符,即if (condition1 != condition2)我了解它是如何工作的。然而,在条件2中,有'!',这就是我要问的。这意味着什么?

最佳答案

! 运算符在 Linux 中有多种用途。 看这个article .

在您的情况下,可能是检查历史记录中的命令是否作为输入给出。 请参阅文章的第一点。

关于c - '!'在输入缓冲区中与 if 语句中的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52090150/

相关文章:

c - 打印新字符时返回

c - 指针大小和它可以容纳的地址范围

python - 将包含逗号分隔值的字符串转换为整数

c++ - 使用某些 OpenCV 函数时出现链接错误 "threshold"Eclipse

c - openssl api验证公钥与私钥匹配

c++ - 可能是C中的指针问题

java - 有没有办法让 Jruby 运行时实习所有字符串?

c - 在c中使用分隔符分割字符串

c++ - 使用 C 预处理器指令建立 GCC/G++ 链接

ubuntu - CXX Cmake 编译器未知