我正在尝试将常规文本与我的输入进行比较,如果发生这种特定情况,我想打印一些东西,如果没有,就继续运行。
这是代码:
int main()
{
int c;
c = getchar();
while (c != EOF)
{
putchar(c);
if (c == 'nir')
{
printf ("you typed nir");
}
c = getchar();
}
}
答案 0 :(得分:1)
您正在尝试将字符串与字符进行比较。而不是使用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 ");
答案 1 :(得分:1)
这个问题有点让我感到困惑,我不能马上回答这个问题,所以让我们从头开始吧。首先,'nir'
(如果它完全编译)是编写单个整数的一种非常奇怪的方式,而我认为你的意思是"nir"
,一串文本。但是,(c == "nir")
无法编译,是吗? [这可能就是你尝试(c == 'nir')
作为随机镜头的原因,不是吗,虽然这对C来说没有任何意义。]
在您使用它的上下文中,"nir"
是地址。现在,您可能还不知道这意味着什么 - 在您获得收益之前也不会几周的C经验。今天你可以使用的是标准库的strcmp()
函数,由 string.h提供。我建议你看一下,然后从那里开始。
顺便提一下,不要再次输入'nir'
!这在C语言中没有任何意义。单引号用于单个字符,如'n'
,代表字符的整数ASCII值。
答案 2 :(得分:0)
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);
}
试试此代码