C言語の問題についてです。
早急にお願いします。
≪問題≫
対象となる文章 : 改行を含まない1024文字以下の英語の文章
区切り文字 : いずれも半角で空白、ピリオド、カンマのみ
切り出す単語 : 3から6文字の単語(2文字以下や7文字以上の単語は無視)
≪入力例≫
※区切り文字及び英数字で構成される英文1行(すべて半角)
(Rain, rain, go to Spain.)
≪出力例≫
※空白文字1文字(半角)で区切られた単語、最後は空白なし
(Rain rain Spain)
以下が自分が書いたものとなっています。
しかし、コンパイルは通るのですが、セグメンテーションエラーとなってしまいます。
どこがおかしいのか教えてください。
#include <stdio.h>
#include <string.h>
main(){
char s1[2222];
char s2[] = " ,.";
char *tok;
int kazu=0,x=0;
fgets(s1,sizeof(s1),stdin);//s1を入力
tok = strtok(s1,s2);//s1の中にあるs2のどれかを区切り値としてわける。
kazu=strlen(tok);
x=kazu;
if(kazu>=3 && kazu<=6){
printf( "%s",tok);//区切られたものを出力する。
}
kazu=0;
while( tok != NULL ){
tok = strtok( NULL, s2 );//前の続きから見ていって2行上と同じ動作をする。
kazu=strlen(tok);
if(kazu>=3 && kazu<=6){
printf( "%s",tok);//区切られたものを出力する。
}
kazu=0;
}
return 0;
}

回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。