检查三元运算符是否存在的 C 程序

标签 c operator-keyword ternary

我无法通过以下代码找出三元运算符是否存在。请帮忙。

#include <stdio.h>
#include <ctype.h>
#include <string.h>
void one();
int main()
{
    FILE *fp;
    fp=fopen("C:/Users/HP/Documents/NetBeansProjects/CD2/1.txt","r");
    char c;
    void one()
    {
        char c;
        while((c=fgetc(fp)!=EOF))
            {
                if(c==':')
                {
                    printf("\nThe ternary operator present");
                    return;
                }
            }
    }
    while((c=fgetc(fp))!=EOF)
    {
        printf("\n-->%c",c);
        if(c=='?')
        {
            one();
        }
     }

    return 0;
}

我想知道为什么这段代码不起作用,并说明文件 1.txt 中是否存在三元运算符

输出显示“?”之前的所有字符如果我们打印它们,但为什么它找不到冒号 ':' ?

最佳答案

while 循环的退出条件可能是问题所在。 = 的优先级低于 != 运算符。所以

(c=fgetc(fp)!=EOF)

评估方式如下

(c= (fgetc(fp)!=EOF) )

参见this C 中各种运算符的优先级。

你可以做

while((c=fgetc(fp))!=EOF)

相反。首先将fgetc()的返回值赋值给c,然后进行比较。

即变量c得到比较结果,这意味着该值要么是0,要么是1

您的程序应该检查 ? 以及其他操作数。 请参阅this .

对于像“运算符”是字符串一部分这样的情况,简单的检查可能不够

char str[]="the ternary operator is ?:";

检查这种情况是否发生有点复杂。

编辑: 如Jens指出,fgetc() 返回一个 int 而不是 char。因此,将 c 设为 int 而不是 char

参见this发布。

关于检查三元运算符是否存在的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51340024/

相关文章:

c++ - 实现字符串的 C++ 运算符

PHP简写(三元)函数

php - 用 PHP 中的逻辑表达式替换 IF

将短数组的值复制到长数组

full-text-search - Solr:如何在文本字段上搜索完整匹配项?是否有隐藏的 equal() 运算符?

c - C中自动变量和全局变量的初始化

JavaScript 运算符表达式

Python 向量的三元运算

c++ - C/C++ 中的算法速度测试器

C - 从文件中逐字读取并将其插入哈希表中