2016-01-12 36 views
-3

我想問一下如何在C識別序列例如AAAAA & DDDDD序列是所有輸入的字符必須是相同的..怎麼可能實現呢?我需要使用char嗎?以下是我不得不嘗試如何識別序列用C

#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); 
} 
+0

'prinf'需要一個字符串參數。一個字符串是一個零終止的字符數組。 'printf(&ch)'不符合要求。 'scanf(「%cccc」,&ch)'掃描一個字符後跟三個字母'c'。 – lurker

+0

您的if語句將ch賦予'c',請使用if(ch =='c'),但不能用它比較字符串中的單個字符。您需要將輸入存儲爲字符串並使用strcmp()或類似的函數。 – Nunchy

+0

我是否以錯誤的功能開始? – yoona1314

回答

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); 

人的strcmp(3):

的STRCMP ()函數比較兩個字符串s1和s2。它返回 的整數小於,等於 於或大於零如果s1被發現,分別爲小於,以匹配或大於s2 。 的STRNCMP()函數是相似的,除了它比較s1和 s2的僅第一(至多)n個字節。


你的代碼中包含一些錯誤。 %c格式用於掃描單個字符,對於字符串使用%s。在這裏:

if (ch = 'c') 

您分配給'c'ch,你想不是。使用C中的==進行比較。

1

我想試試這個:

  • 接受由字符的字符串作爲輸入(而不是字)
  • 設置一個循環通過串走,性格
  • 你的第一個字符將是「好」的價值
  • 如果在任何時候,你會遇到不同的字符,無法跳出循環
  • 如果到達字符串的結尾沒有失敗,你成功了
+0

如何將第一個字符定義爲好值? – yoona1314

0

創建您要查找的模式的宏。將您的輸入轉換爲您想要識別的模式的大小。兩者相減。如果0模式匹配。否則,右移1位並重復。示例,Pattern查找#define wPAT 0x1234。輸入=> U32 dwInput = 0x12345678。結果=(U16)dwInput - wPAT。如果爲0,則發現模式。否則,dwInput >> 1並重復Result =(U16)dwInput - wPAT。重複16次,以發現是否模式存在與否