2015-09-28 78 views
-2

非常簡單,但我遇到了麻煩。我有一個數組中的隨機字母序列:計算陣列中出現的字符數

char box[] = "rbpbymgoybrppogrgxombpgpbpbooyogrrm"; 

我需要計算某個字母出現的次數(例如字母'r')。

這是到目前爲止我的程序:

main() { 
    int count = 0; 

    for(int i = 0; i < sizeof(box); i++) { 
     if(box[i] == '\r') count++; 
    } 

    printf("Red: %d", count); 
} 

現在我已經有使用「\ r」,試圖識別字符就是不工作預感。是否有另一種方法來表示字符並在數組中檢查它們?我使用他們的ASCII等價物嗎?

+0

'的sizeof(盒子)'不是你期望它做的。使用'strlen(box)'獲取存儲在數組中的**字符串**的長度,而不是**數組**中的條目總數。如果您沒有看到區別,請閱讀C字符串以及它們與'char'數組(和'char *')的關係。 – Olaf

+0

這段代碼不會編譯,首先,因爲main()總是返回一個'int'。並且因爲printf()的調用需要聲明:'#include ' – user3629249

+0

還沒有觸及#include 但是在讀完它之後,strlen函數聽起來更合適。 – Jertise

回答

2

'\r'將意味着Carriage Return。只需使用'r'

if(box[i] == 'r') 
+0

我看......沒有涉及到那個術語......我通常使用反斜線來識別數組中的整數,但我沒有意識到它與字符不一樣。 – Jertise

+1

爲什麼你會使用反斜線來識別數組中的整數? –

+0

我不確定...我只是假設它是如何工作的哈哈。所以我猜它對整數的作用方式相同?我可以使用'34'而不是'\ 34'? – Jertise

0

下面的代碼將給每個字母類型的計數輸入字符串

它應該很容易選擇性地只打印在第二次加息的信「for」循環

#include <stdio.h> 

#define MAX_CHAR_TYPES (256) 

static char box[] = "rbpbymgoybrppogrgxombpgpbpbooyogrrm"; 

static unsigned int charCounts[ MAX_CHAR_TYPES ]= {0}; 

int main(void) 
{ 
    for(size_t i = 0; i < (sizeof(box)-1); i++) 
    { 
     charCounts[ (int)box[i] ]++; 
    } 

    for(int i=0; i < MAX_CHAR_TYPES; i++) 
    { 
     if(0 < charCounts[i]) 
     { 
      printf("There were %d of the %c character\n", charCounts[i], (unsigned int)i); 
     } 
    } 
    return 0; 
} // end function: main 
+1

'charCounts [(unsigned char)box [i]] ++;'如果字符串具有負值的字符將更加謹慎。應該使用'UCHAR_MAX + 1'而不是'256'。 –

0

一個R編程語言,這就是我們得到

>arr="aaaaafdgshghsghgshfsgfsaaadahsgdhsgdhaaaggghahgahgahghaghhhha" 
>arr 
#[1] "aaaaafdgshghsghgshfsgfsaaadahsgdhsgdhaaaggghahgahgahghaghhhha" 
> aa=strsplit(arr,"") 
> aa 
#[[1]] 
# [1] "a" "a" "a" "a" "a" "f" "d" "g" "s" "h" "g" "h" "s" "g" "h" "g" "s" "h" "f" "s" "g" "f" "s" "a" "a" "a" "d" "a" "h" "s" 
#[31] "g" "d" "h" "s" "g" "d" "h" "a" "a" "a" "g" "g" "g" "h" "a" "h" "g" "a" "h" "g" "a" "h" "g" "h" "a" "g" "h" "h" "h" "h" 
#[61] "a" 
>table(aa[[1]]) 
# a d f g h s 
# 17 4 3 14 16 7 
相關問題