我写了关于文件里单词出现的次数,但是得不到结果!为什么呢??
源程序如下:
#include<stdio.h>
#include<string.h>
void main(int argc, char* argv[])
{ char word_1[10];
char word_2[10];
char ch;
int count;
FILE *fp;
if((fp=fopen("E:/file.txt","rt"))==NULL)
{ printf("cannot open the file\n");
return;}
printf("input the word:\n");
scanf("%s",word_2);
ch=fgetc(fp);
while(ch!=EOF)
{ int i=0;
while(ch!=' ')
{ word_1[i]=ch;
ch=fgetc(fp);
i++;}
word_1[i]='\0';
if((strlen(word_1)==strlen(word_2))&&(strcmp(word_1,word_2)==0))
count++;}
printf("%d",count);
fclose(fp);
}
----------------解决方案--------------------------------------------------------
E:/file.txt错了吧...E:\\file.txt
----------------解决方案--------------------------------------------------------
我写了关于文件里单词出现的次数,但是得不到结果!为什么呢??
源程序如下:
#include<stdio.h>
#include<string.h>
void main(int argc, char* argv[])
{ char word_1[10];
char word_2[10];
char ch;
int count; /*没有初始为0*/
FILE *fp;
if((fp=fopen("E:/file.txt","rt"))==NULL) /*既然是命令行,这个应该是arg[1],不过,你在测试的时候就不必了*/
{ printf("cannot open the file\n");
return;}
printf("input the word:\n");
scanf("%s",word_2);
ch=fgetc(fp);
while(ch!=EOF)
{ int i=0;
while(ch!=' ')
{ word_1[i]=ch;
ch=fgetc(fp);
i++;}
word_1[i]='\0';
if((strlen(word_1)==strlen(word_2))&&(strcmp(word_1,word_2)==0))
count++;}
printf("%d",count);
fclose(fp);
}
----------------解决方案--------------------------------------------------------
都是一样没结果啊!!
----------------解决方案--------------------------------------------------------
还需要怎样改啊 改不了的话就给老师 谢谢大哥们!!
----------------解决方案--------------------------------------------------------
我擅自帮你改变了一个判断标准:判断是否是单词不应该用空格来判断分隔,而应该用非字母来分隔
比如
#include<stdio.h>
#include<string.h>
这样,include这个单词应该出现了2次
#include<stdio.h>
#include<string.h>
/*判断一个字符是否为字母*/
int NaC(char c){
if( (c>='a' && c<='z') || (c>='A' && c<='Z') )
return 0;
return 1;
}
int main(void){
char word_1[20];
char word_2[20];
int ch;
int word_2_length,i,count=0;
FILE *fp;
if((fp=fopen("e:\\file.txt","rt"))==NULL){
printf("cannot open the file\n");
return;
}
printf("input the word:");scanf("%s",word_2);
word_2_length = strlen(word_2);
do{
i=0;
while( !NaC(ch=fgetc(fp)) && ch!=EOF ) word_1[i++]=ch;
word_1[i]='\0';
if( i==word_2_length && !strcmp(word_1,word_2) )
count++;
}while( ch!=EOF );
printf("%d\n",count);
fclose(fp);
return 0;
}
----------------解决方案--------------------------------------------------------