【发布时间】:2018-04-24 00:31:26
【问题描述】:
所以这段代码的第一部分是读取任何随机文本文件并打印其中的总字数,我理解,但对于第二部分(??????部分)不同的字数必须打印。不是唯一词的数量,即只出现一次的词,而是不同的词,即唯一词加上每个重复词之一。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 80
typedef char string[MAX+1];
void main()
{
char file[MAX], s[MAX];
int count = 0, i, j;
FILE *inFile;
printf("Input file name: ");
scanf("%s", &file);
inFile = fopen(file,"r");
if (inFile == NULL)
{
printf("\n\nFile does not exist or cannot be opened.\n");
exit(1);
}
while (fgets(s, MAX, inFile) !=NULL)
{
for (i = 0; s[i] != '\0';i++)
{
if (s[i] == ' ')
count++;
}
}
int total= count + 1;
printf("The total number of words in the file is: %d\n", total);
?
?
?
?
?
?
?
fclose(inFile);
int different = ?
printf("The total number of different words in the file is: %d\n", different);
*
*
*
我该如何计算和打印这个?
【问题讨论】:
-
您需要记录您目前阅读的所有单词。创建一个用计数器存储每个单词的结构,当您阅读一个新单词时,查找该单词是否已被阅读。如果是这种情况,则将计数加一,否则将一个新单词添加到字典中,计数器为 1。简单易行。现在我已经给了你这个想法,试着自己去实现它。
-
if (s[i] == ' ') count++;如果文件包含" one \n"会怎样?或" one two \n"?