【发布时间】:2016-09-30 12:03:17
【问题描述】:
我正在学习 C 并且遇到了一些困难。我必须编写一个程序,它变成一个文本(最多 80 个字符)并将文本中的单词放在一个字符 words[80][80] 中(每个单词都必须是在这个数组中只有一次!它也被定义为全局)和每个单词在 int count[] 中出现的次数(索引必须与 word[][] 中的 this 相同)。 该函数称为 int extract_and_count(char *source,int *count)。 我写了一些代码,但我不确定如何实现这个功能。有人可以帮我吗? 我也是stackoverflow的新手,所以如果我犯了任何错误,对不起。
这是一些代码,但还没有结束:
int extract_and_count(char *source,int *count){
char token[80][80];
char *p;
int i = 0;
p = strtok(source, " ");
while( p != NULL ){
strcpy(token[i],p);
printf("%s\n",*(token+i));
i++;
p = strtok(NULL , " ");
}
char word;
int value = 0, j;
for(i = 0 ; i < 80 ; i++){
word = token[i];
for(j = 0 ; j < 80 ; j++){
if(strcmp(word,token[i])==0){
value++;
}
}
}
return 1;
}
【问题讨论】:
-
请在此处发布您的代码
-
我在问题中放了一些代码,但效果不好,根本不起作用。这只是一个开始版本。我创建了一个新数组来存储所有单词然后我想要计算 token[][] 中单词的值,并将它们存储在 words[][] 和 count[] 中。
-
我还是不明白你的目的。另外,我不明白
extract_and_count的输入参数是什么意思,单词分隔符是什么,以及你想如何排列数组中的单词 -
extract_and_count 变成 char *source,它是一个包含文本的数组(最多 80 个字符)。我必须从带有分隔符 "" 的文本中取出单词,将它们(仅一次)放入 words[80][80] 和 int count[] 我必须存储每个单词出现在文本中的时间。示例 : text : "c language is difficult.c is also fun" words[][] = { "c","language","is","difficult","also","fun"};计数[] = {2,1,2,1,1,1} 字[0] = c;计数[0] = 2
-
如果你每次传递一个 80 字符的输入,你必须保持对数组中当前位置的计数,并在调用之间改变它。我想你还没有完全理解这个任务。请仔细阅读,直到您清楚为止。