检查三元运算符是否存在的 C 程序
C program to check for presence of ternary operator
我无法通过以下代码查明三元运算符是否存在。请帮助。
#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) )
有关 C 中各种运算符的优先级,请参阅 this。
你可以做到
while((c=fgetc(fp))!=EOF)
相反。先把fgetc()
的return值赋给c
,然后再做比较。
即,变量 c
得到比较结果,这意味着该值是 0
或 1
。
您的程序应该检查 ?
和其他操作数。
参见 this。
对于像 'operator' 这样的字符串的一部分这样的情况,一个简单的检查可能还不够
char str[]="the ternary operator is ?:";
检查这种情况的发生有点复杂。
编辑:
正如 Jens 指出的那样,fgetc()
return 是 int
而不是 char
。所以让 c
成为 int
而不是 char
.
参见 post。
我无法通过以下代码查明三元运算符是否存在。请帮助。
#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) )
有关 C 中各种运算符的优先级,请参阅 this。
你可以做到
while((c=fgetc(fp))!=EOF)
相反。先把fgetc()
的return值赋给c
,然后再做比较。
即,变量 c
得到比较结果,这意味着该值是 0
或 1
。
您的程序应该检查 ?
和其他操作数。
参见 this。
对于像 'operator' 这样的字符串的一部分这样的情况,一个简单的检查可能还不够
char str[]="the ternary operator is ?:";
检查这种情况的发生有点复杂。
编辑:
正如 Jens 指出的那样,fgetc()
return 是 int
而不是 char
。所以让 c
成为 int
而不是 char
.
参见