ZyAlbert 2021-04-28 11:59 采纳率: 100%
浏览 53
已采纳

C语言:读取一个英文文档,统计单词数。结果运行始终为1,出了什么问题吗?

#include <stdio.h>
int main(){
FILE*fp;
int ch;
int count = 1;
char words[100];
int i=0,j;
fp=fopen("D:\test.txt","r");
ch = getc(fp);
while(ch != EOF)
{if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z'||ch ==' ')
    {words[i] = ch;}
 else{
 words[i]=' ';}
 i++;
 ch = getc(fp);
}
words[i+1]='\0';
for(j =0;j<=sizeof(words);j++){
    if(words[j] == ' '){
    count++;}}
printf("这篇英语文章中单词数是%d",count);
fclose(fp);
return 0;}

  • 写回答

6条回答 默认 最新

  • CSDN专家-Time 2021-04-28 12:43
    关注

      ↵冒号双斜杠去读文件路径,还有,sizeof不能用,用strlen.自己点断点看一下

    代码在下面

    #include<stdio.h>
    #include<string>
    #pragma warning(disable:4996)
    
    int main(){
    	FILE*fp;
    	int ch;
    	int count = 1;
    	char words[100];
    	int i = 0, j;
    	fp = fopen("D://test.txt", "r");
    	ch = getc(fp);
    	while (ch != EOF)
    	{
    		if (ch >= 'A'&&ch <= 'Z' || ch >= 'a'&&ch <= 'z' || ch == ' ')
    		{
    			words[i] = ch;
    		}
    		else{
    			words[i] = ' ';
    		}
    		i++;
    		ch = getc(fp);
    	}
    	words[i + 1] = '\0';
    	for (j = 0; j <= strlen(words); j++){
    		if (words[j] == ' '){
    			count++;
    		}
    	}
    	printf("这篇英语文章中单词数是%d", count);
    	fclose(fp);
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?