我是这样想的:
用一个二维字符数组a[80][80]存这篇文章,(为简单起见,我先设这篇文章中无标点,仅有空格,而且单词间的空格仅有一个.),a[i]存一行.每一行中的单词可存入一维数组a[i]中,怎么统计各个单词的个数呢?
请指导,谢谢~~
[此贴子已经被作者于2007-11-18 10:36:40编辑过]
[此贴子已经被作者于2007-11-18 10:36:40编辑过]
#include<stdio.h>
#include<string.h>
struct words{
char word[80];
int num;
} passage[10];
main()
{
char s[]="This is C programming text This is C text";
char a[10][80];
int i,j,k,t,r,u;
i=j=k=t=u=0;
for(i=0;i<10;i++){
passage[i].num=0;
}
i=0;
while(k<strlen(s)){
while(s[k]!=' '&&k<strlen(s)){
a[i][j]=s[k];
j++;
k++;
}
a[i][j]='\0';
i++;
k++;
j=0;
}
for(t=0;t<i;t++){
puts(a[t]);
}
//这以上程序是将char s[]存放在数组a[10][80]中,
//其中a[i]放入一个单词。具体见论坛:
//将char s[]存放在数组a[5][20]
while(strlen(passage[u++].word)>0){
for(t=0;t<i-1;t++){
for(r=t+1;r<i;r++){
if(strcmp(a[t],a[r])==0){
strcpy(passage[u].word,a[t]);
passage[u].num++;
}
}
}
}
for(r=0;r<u;r++){
printf("%s %d",passage[r].word,passage[r].num);
}
//这里是统计各个单词出现的个数。
}
程序有问题,但我看不出。请帮忙!谢谢~~
我修改了一下,但仍有一点问题:
#include<stdio.h>
#include<string.h>
struct words{
char word[80];
int num;
} passage[10];
main()
{
char s[]="This is C programming text This is C text";
char a[10][80];
int i,j,k,t,r,u;
i=j=k=t=u=0;
for(i=0;i<10;i++){
passage[i].num=0;
}
i=0;
while(k<strlen(s)){
while(s[k]!=' '&&k<strlen(s)){
a[i][j]=s[k];
j++;
k++;
}
a[i][j]='\0';
i++;
k++;
j=0;
}
for(t=0;t<i;t++){
puts(a[t]);
}
printf("\n\n");
//这以上程序是将char s[]存放在数组a[10][80]中,
//其中a[i]放入一个单词。具体见论坛
//http://bbs.bc-cn.net/viewthread.php?tid=166409&star=at#
// do{
for(t=0;t<i-1;t++){
for(r=t+1;r<i;r++){
if(strcmp(a[t],a[r])==0){
strcpy(passage[u].word,a[t]);
passage[u++].num++;
}
}
}
// }while(strlen(passage[u].word)>0);
for(r=0;r<u;r++){
printf("%s %d\n",passage[r].word,passage[r].num+1);
}
//这里是统计各个单词出现的个数。
}
//程序有问题,但我看不出。请帮忙!谢谢~~