#include <stdio.h>
#include <stdlib.h>
int main()
{
char fname[256]; /*ファイル名*/
FILE *fp; /*ファイルストリーム*/
int ch,oldch=0; /*読み込んだ文字*/
int NowInWord=0; /*単語検出中は1,疑似単語検出中は-1,そうでない時は0*/
int count=0; /*見つけた単語の数*/
printf("file name : ");
gets(fname);
fp=fopen(fname,"r");
if (fp==NULL) {
printf("can't open %s\n",fname);
exit(1);
}
while ((ch=fgetc(fp)) != EOF) {
/*ファイルから1文字読み込んでchに代入して,それがEOFでなかったら*/
if (NowInWord==1) { /*単語読み込み中ならば*/
if (isalnum(ch)||ch=='_') { /*chがアルファベット,数字または_だったら*/
putchar(ch);
} else { /*単語の外に出たぞ*/
NowInWord=0;
count++;
if (count%8==0) { /*8回に一回改行したいなー*/
printf("\n");
} else {
printf(" ");
}
}
} else if (NowInWord==-1) { /*疑似単語読み込み中ならば*/
if (isalnum(ch)||ch=='_') { /*chがアルファベット,数字または_だったら*/
} else { /*疑似単語の外に出たぞ*/
NowInWord=0;
}
} else { /*単語読み込み中でないならば*/
if (isalpha(ch)) { /*chがアルファベットだったら*/
if (isdigit(oldch)) {
NowInWord=-1;
} else {
NowInWord=1;
putchar(ch);
}
}
}
oldch=ch;
}
fclose(fp);
}
/*
対象としたtest.c
------------------------------------------------------
#include <stdio.h>
int main()
{
printf("Hello. How are you?\n");
printf("Fine, thanks. And You?\n");
printf("So so.\n");
return 0;
}
------------------------------------------------------
実行結果
>extractWord.exe
file name : test.c
include stdio h int main printf Hello How
are you n printf Fine thanks And You
n printf So so n return
対象としたtest.txt
------------------------------------------------------
1234 ..wer qwe123+wer456
sw_qwe,q12_12,12qwe,A123B123
wsed_123
------------------------------------------------------
実行結果
>extractWord.exe
wer qwe123 wer456 sw_qwe q12_12 A123B123 wsed_123
*/
|