|
>アルファベットの文字列を入力(空白文字も含む)し、その中に含まれている単語の個数と文字数を出力するプログラムをつくりたいです。
>文字列は小文字と空白文字で構成して、単語の区切りは空白文字としたいです。
トークン分割なら「strtok()」を使えば簡単に出来るよ。
>文字列の入力にはgets()を用いて作りたいと思っているのですが、
gets() より fgets() を使用することをお薦めします。
例を挙げるとこんな感じかな?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( void )
{
/* ***** 内部変数定義 ***** */
char buf[1024] = { '\0' };
char *p;
int count;
do /* 空文字列入力までループ */
{
/* ***** プロンプト表示 ***** */
printf( "> " );
/* ***** 文字列入力 ***** */
fgets( buf, sizeof(buf), stdin );
( p=strrchr(buf,'\n') ) ? *p='\0' : 0; /* 改行除去 */
if( buf[0] ) /* 入力有り? */
{
/* ***** 最初の単語の切り出し ***** */
count = 0;
p = strtok( buf, " " );
while( p ) /* トークンが切り出せなくなるまでループ */
{
/* ***** 切り出した単語の表示 ***** */
printf( "%s(%d)\n", p, strlen(p) );
/* ***** 単語数カウント ***** */
count++;
/* ***** 次の単語の切り出し ***** */
p = strtok( NULL, " " );
}
if( count ) /* 単語は切り出せたか? */
{
/* ***** 単語数を表示 ***** */
printf( "単語数:%d\n", count );
}
}
} while( buf[0] );
return 0;
}
|