我无法明确说明该功能应该做什么,所以我想我会向你们展示一个例子。假设我的程序打开并扫描文本文件,其中包含以下内容:
“猫追赶公鸡后无济于事。”
基本上我正在尝试编写的函数应该打印出有多少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
“
答案 0 :(得分:3)
这听起来像是家庭作业,所以我不会为你编写代码,但会给你一些线索。
一些细节。你实际上想要映射一件事到另一件事:词的长度与这些词的数量。对于映射,存在特殊数据类型,通常称为散列(表)或字典。但是在你的情况下,数组可以完美地用作地图,因为你的键是统一的并且继续(1,2 ...到某个最大字长)。
答案 1 :(得分:1)
您不能使用单个int来计算所有这些。你需要一个数组,然后在0位置你跟踪多少1个字母的单词,在1位你积累2个字母的单词,依此类推。