2013-05-01 26 views
0

程序按原樣告訴我,有兩個名稱爲小寫的數組有0個大寫字母0個小寫字母0個空格和0個標籤,但是其他61個字符。名稱有10個字母組合。我想我需要一個循環遍歷數組,但我不確定這是否正確,或者我將如何執行此操作。如何實現一個循環來讀取檢查大寫字母數量的名稱數組?

for (i=0; i<n_names; i++){ 
    printf("%d: [[%s]]\n", i, names[i]);} 
for (i=0; i<20; i++){ 
    gets(names[i]); 

    while (s[i] != 0) 
    { 
     if (s[i] >= 'a' && s[i] <= 'z') { 
      lowercase++; 
      i++; 
     }   
     else if (s[i] >= 'A' && s[i] <= 'Z') { 
      uppercase++; 
      i++; 
     }     
     else if (s[i] == ' ') {   /* Tab - write '\t' for clarity! */ 
      tab++; 
      i++; 
     } 
     else if (*names[i] == ' ') { 
      spaces++; 
      i++; 
     } 
     else { 
      other++; 
      i++; 
     } 
    } 
} 

printf("Your string has %d lowercase letter(s) \n",lowercase); 
printf("Your string has %d uppercase letter(s) \n",uppercase); 
printf("Your string has %d tab(s) \n",tab); 
printf("Your string has %d space(s) \n", spaces); 
printf("Your string has %d other character(s) \n",other); 
+0

是什麼'*名稱[I] =='「'? – perreal 2013-05-01 00:32:45

+0

不需要爲每個單詞保存每種類型字符的數量,以便我可以根據這些特徵創建帳單。 – 2013-05-01 00:33:12

+0

names [i]是一個字符數組,其中名稱在用戶從stdin輸入後存儲。 (枚舉{MAX_CARDS = 20}; \t枚舉{MAX_NAME_LEN = 50}; \t炭名稱[MAX_CARDS] [MAX_NAME_LEN]; \t INT n_names = 0;)(的strcpy(名稱[n_names ++],字);) – 2013-05-01 00:36:00

回答

0
int i, n_idx; 
for (n_idx = 0; n_idx < n_names; n_idx++) { 
    const char *s = names[n_idx]; 
    for (i = 0; s[i] != 0; i++) { 
     if (s[i] >= 'a' && s[i] <= 'z') { 
      lowercase++; 
     }  
     else if (s[i] >= 'A' && s[i] <= 'Z') { 
      uppercase++; 
     }  
     else if (s[i] == '\t') {  
      tab++; 
     } 
     else if (s[i] == ' ') { 
      spaces++; 
     } 
     else{ 
      other++; 
     } 
    } 
} 
0

我不認爲你粘貼了整個代碼,我認爲你的「s」指向名稱中的字符串。在while循環之前還將「i」初始化爲零。

請使用標準功能islower判斷,isupper和 的標籤,你需要在與文件ctype.h「\ T」

其它有用的功能比較爲您的方案。

#include <ctype.h> 

int isalnum(int c); 
int isalpha(int c); 
int isascii(int c); 
int isblank(int c); 
int iscntrl(int c); 
int isdigit(int c); 
int isgraph(int c); 
int islower(int c); 
int isprint(int c); 
int ispunct(int c); 
int isspace(int c); 
int isupper(int c); 
int isxdigit(int c); 
相關問題