テキストファイルの単語の検索とカウント
プログラミングしてテキストファイルを作成することを要求します.各単語はスペースと行をまたぐことを含まず、単語は文字列で構成され、大文字と小文字を区別します.下記の機能を完成します.所与の単語がテキストファイルに現れる総回数を統計し、ある単語がテキストファイルに初めて出現する行号と位置を検索出力します.コードは以下の通りです
#include
#include
#include
void creatfile(FILE* fp)
{
char ch[1024];
// , #
printf("
Enter the contents of this file. End with # in the beginning of a line:
");
fgets(ch,1024,stdin);
while(ch[0]!='#')
{
//
fputs(ch,fp);
fgets(ch,1024,stdin);
}
}
void search(FILE* fp,char b[])
{
//a[50]
char ch,a[50];
//
int first_row,first_col;
int index=0,row=1,col=0,count=0; //count ,col ,row
//
while(!feof(fp))
{
ch=fgetc(fp);
if(isalpha(ch))
{
a[index]=ch;
index++;
}
else if(ch==' ')
{
if(index!=0)
{
col++;
}
a[index]='\0';//
index=0;
if(strcmp(a,b)==0)
{
count++;
if(count==1)
{
first_row=row;
first_col=col;
}
}
}
//
else if(ch=='
')
{
a[index]='\0';
row++;
index=0;
col=0;
if(strcmp(a,b)==0)
{
count++;
if(count==1)
{
first_row=row;
first_col=col;
}
}
}}
printf("This word appears %d time(s) in total.
",count);
if(cout>0)
{
printf("The word %s first appears in line:%d,column:%d",b,first_row,first_col);
}
}
int main()
{
char b[50];
FILE *fp;
fp=fopen("word_search.txt","w+");
creatfile(fp);
printf("
Enter the word you want to search:
");
scanf("%s",b);
rewind(fp);
search(fp,b);
// ,
fclose(fp);
return 0;
}
まとめて書きます.そして宿題を出す時に発生した問題をまとめます.1.createfile実行後にrewind()関数を使ってファイルポインタをファイルの先頭に戻します.