为什么我不能将我在C中的输入与常规文本进行比较?
我试图将一个常规文本与我的输入进行比较,如果出现这种情况,我想打印一些东西,如果没有,就继续运行 代码如下:为什么我不能将我在C中的输入与常规文本进行比较?,c,C,我试图将一个常规文本与我的输入进行比较,如果出现这种情况,我想打印一些东西,如果没有,就继续运行 代码如下: int main() { int c; c = getchar(); while (c != EOF) { putchar(c); if (c == 'nir') { printf ("you typed nir"); } c = getcha
int main()
{
int c;
c = getchar();
while (c != EOF)
{
putchar(c);
if (c == 'nir')
{
printf ("you typed nir");
}
c = getchar();
}
}
您正在尝试将字符串与字符进行比较。尝试获取字符串,而不是使用getchar
char str[100], line[500];
1) 用fgets读一行
fgets(line,100, stdin)
2) 使用sscanf获取字符串
sscanf(line,"%s", str);
3) 使用strcmp比较字符串
if(strcmp(str,"nir") == 0)
printf("You entered nir ");
这个问题有点太困惑了,我无法一下子回答,所以让我们从头开始。首先,
'nir'
(如果它可以编译的话)是一种非常奇怪的编写单个整数的方式,而我认为您指的是“nir”
,一个文本字符串。但是,(c==“nir”)
不会编译,是吗?[这大概就是为什么您尝试将(c=='nir')
作为一个随机镜头,不是吗,尽管它在c中没有任何意义。]
在您使用它的上下文中,“nir”
是一个地址。现在,您可能还不知道这意味着什么——在获得几周的C语言经验之前,您也不会知道。现在您可以使用的是标准库的strcmp()
函数,由string.h提供。我建议你查一下,然后从那里开始
顺便说一句,不要再输入'nir'
!这在C中意味着没有任何意义。单引号表示单个字符,如'n'
,代表字符的整ASCII值
main()
{
char c;
int i = 0;
do
{
c = getchar();
switch(i)
{
case 0:
if(c == 'n')
{
i++;
}
break;
case 1:
if(c == 'i')
{
i++;
}
else
{
i = 0;
}
break;
case 2:
if(c == 'r')
{
printf ("you typed nir");
}
i = 0;
break;
}
}while (c != EOF);
}
尝试此代码An
int
是一个整数。它不希望与字符串进行适当的比较。这是家庭作业,不是吗。如果是这样的话,他们可能会希望您拥有最后三个字符的数组(或循环缓冲区),并将它们与目标单词“nir”进行比较,或者创建一个自动跟踪“nir”目标单词的机器。如果这不是家庭作业。。。不,我不会想到这个。有人能给我看一个简单的比较吗?