如何识别C中的序列

时间:2016-01-12 00:59:42

标签: c

我想问一下如何识别C中的序列,例如AAAAA& ddddd序列是所有输入的字符必须相同..怎么可能实现呢?我需要使用char吗?这是我试过的

 #include<stdio.h>

int main() {
   char ch;


   scanf("%cccc", &ch);

   if (ch = 'c')
      printf(&ch);
   else
      printf("Character is Not the same sequence");

   return (0);
}

3 个答案:

答案 0 :(得分:1)

比较两个字符:

char a = 'a';
char b = 'b';
return a == b; // this compares integer values of two characters
               // and returns 1/0 if they do match/do not match

比较字符串:

char str1 = "AAAAA";
char str2 = "aaaaa";
return strcmp(str1, str2);

man strcmp(3):

  

strcmp()函数比较两个字符串s1和s2。它回来了   小于等于的整数          如果发现s1,则分别小于,或匹配,或大于零          比s2。   strncmp()函数类似,只是它比较了s1和s的唯一第一个(最多)n个字节          S2。

您的代码包含很少的错误。 %c格式用于扫描单个字符,使用%s表示字符串。这里:

if (ch = 'c')

您已将'c'分配给ch,而不是您想要的。在C中使用==进行比较。

答案 1 :(得分:1)

我会试试这个:

  • 接受字符串作为输入(而不是字符)
  • 设置循环以逐个字符地遍历字符串
  • 你的第一个角色将是“好”值
  • 如果在任何时候,您遇到不同的角色,则不会退出循环
  • 如果到达字符串的末尾而没有失败,则表示您已成功

答案 2 :(得分:0)

为要查找的模式创建宏。将您输入的输入强制转换为您想要识别的模式的大小。减去两者。如果0模式匹配。否则,向右移1位并重复。例如,找到#define wPAT 0x1234的模式。输入=&GT; U32 dwInput = 0x12345678。结果=(U16)dwInput - wPAT。如果为0,则找到模式。否则,dwInput&gt;&gt; 1并重复Result =(U16)dwInput - wPAT。重复16次以查找是否存在模式