C编程:跟踪字长和功能的功能。计数?

时间:2013-02-21 00:20:38

标签: c loops

我无法明确说明该功能应该做什么,所以我想我会向你们展示一个例子。假设我的程序打开并扫描文本文件,其中包含以下内容:

“猫追赶公鸡后无济于事。”

基本上我正在尝试编写的函数应该打印出有多少1个字母的单词(如果有的话),有多少2个字母的单词,多少3个单词的单词等等。

”         长度计数

     2    2
     3    3 
     5    2 
     6    1 
     7    1

这是我的尝试:

int word_length(FILE *fp, char file[80], int count)//count is how many total words there are; I already found this in main()
{
  printf("Length\n");
  int i = 0, j = 0;
  while(j < count)
  {
    for(i = 0; i < count; i++)
    {
      if(strlen(file[i] = i)
        printf("%d\n", i);
    }//I intended for the for loop to print the lengths
  ++i;
  printf("Count\n");
  while()//How do you print the counts in this case? 
  }
} 

我认为我设置循环的方式会导致相同长度的单词被打印两次......所以它看起来像这样,这是错误的。那么我应该如何设置循环呢?

“长度计数

     2    1
     2    2

2 个答案:

答案 0 :(得分:3)

这听起来像是家庭作业,所以我不会为你编写代码,但会给你一些线索。

  1. 要保存多个值,您需要数组。索引 i 的元素将包含长度为 i 的单词的计数器。
  2. 找到识别单词边界(空格,句点,行首等)的方法。然后计算边界之间的字符数。
  3. 增加相关计数器(见提示1)。重复。
  4. 一些细节。你实际上想要映射一件事到另一件事:词的长度与这些词的数量。对于映射,存在特殊数据类型,通常称为散列(表)或字典。但是在你的情况下,数组可以完美地用作地图,因为你的键是统一的并且继续(1,2 ...到某个最大字长)。

答案 1 :(得分:1)

您不能使用单个int来计算所有这些。你需要一个数组,然后在0位置你跟踪多少1个字母的单词,在1位你积累2个字母的单词,依此类推。