/* Part6 演習問題5 */
/* 文字列全体の文字数、英字とその他の文字数 */
#include <stdio.h>

int main(void)
{
  char buf[80] ;
  int n ;
  int nc,na,nn ;  /* ncは全文字数、 naは英字数、nnはその他の文字数 */


  while(1) {
    printf("\n文字列を入力してください(80文字以内,改行文字のみで終了)。\n") ;

    nc=0 ;
    na=0 ;
    nn=0 ;

    for(n=0;n<80;n++) {
      scanf("%c",&buf[n]) ;
      if(buf[n]=='\n') {
    buf[n]='\0' ;     /* 改行文字は空文字に置き換え */
    break ;
      }
    }
    if(n==80) buf[79]='\0' ;
    else if (n==0) break ;   /* 改行文字のみ入力で終了 */
   
    /* printf("入力文字列: %s\n",buf) ;  */
   
    n=0 ;
    while(buf[n]!='\0') {
      nc++ ;
      if(((buf[n]>='A')&&(buf[n]<='Z'))||
     ((buf[n]>='a')&&(buf[n]<='z'))) na++ ;
      else nn++ ;
      n++ ;
    }
    printf("全文字数: %d  英字数: %d  その他の文字数: %d\n",nc,na,nn) ;
  }
  return(0) ;
}

% gcc -Wall part6-5.c
% ./a.out

文字列を入力してください(80文字以内,改行文字のみで終了)。
He is a boy.
全文字数: 12  英字数: 8  その他の文字数: 4

文字列を入力してください(80文字以内,改行文字のみで終了)。
She is a girl.
全文字数: 14  英字数: 10  その他の文字数: 4

文字列を入力してください(80文字以内,改行文字のみで終了)。

  1. 最初の文字列「He is a boy. 」は,全体で12文字,英字は8文字,その他(英字以外の文字)は4文字である.本例では,「その他の文字」とは空白文字とピリオト文字が該当する.
  2. 2番目の文字列「She is a girl. 」は,全体で14文字,英字は10文字,その他は4文字である.本例でも,「その他の文字」は空白文字とピリオド文字である.