[問題] 用strtok計算重複字數
遇到的問題: (題意請描述清楚)
各位程式高手好,小弟資質駑鈍,又來向前輩們請教了。
這次我想寫一個計算字數的程式,
但特別的是,這是要計算重複字數的。
比如說當我給定一個句子: "I can can a can" (我會開罐頭XD)
那程式就要顯示" can: 3 " ("can"出現3次!)
無奈的是,程式跑到一半就當掉,根本就還沒跑到計算次數的部份
另外,計算次數的部份也寫錯,但也不知道該怎麼做
請各位大大指點一條明路吧!謝謝!
希望得到的正確結果:
顯示重複出現的字和次數
程式跑出來的錯誤結果:
編繹成功,但跑的時候會當掉
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev-C++
有問題的code: (請善用置底文標色功能)
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <cstring>
using std::strtok;
using std::strcpy;
int main()
{
char sentence[] = "I can can a can";
char *tokenPtr;
char *s1[32];
char *s2[32];
char *repeatWord[16]; //重複的字
int repeatNo[16]; //重複次數
tokenPtr = strtok( sentence, " " );
//做出用來比較的字元指標陣列
int i = 0;
while ( tokenPtr != NULL )
{
strcpy(s1[i], tokenPtr);
strcpy(s2[i], tokenPtr);
tokenPtr = strtok( NULL, " " );
i++;
}
//計算次數
int z = 0;
for ( int j = 0; j < i-1; j++ )
{
for ( int k = 0; k < i; k++ )
{
if ( strcmp(s1[j], s2[k]) == 0 && j != k )
{
strcpy( repeatWord[z], s1[j] );
z++;
}
}
}
system("pause");
return 0;
}
補充說明:
順便再問一下,如果句子中有標點符號的話,要怎麼消去呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.206.28
推
04/19 13:09, , 1F
04/19 13:09, 1F
→
04/19 13:09, , 2F
04/19 13:09, 2F
→
04/19 13:10, , 3F
04/19 13:10, 3F
喔不…我把 char *s1 改成 char s1 沒有用
把strcpy改成 s1[i] = tokenPtr 也沒用……囧
字串快把我搞瘋了
※ 編輯: graduateme 來自: 140.115.206.28 (04/19 13:51)
推
04/19 13:57, , 4F
04/19 13:57, 4F
推
04/19 13:58, , 5F
04/19 13:58, 5F
→
04/19 13:58, , 6F
04/19 13:58, 6F
→
04/19 13:58, , 7F
04/19 13:58, 7F
→
04/19 13:58, , 8F
04/19 13:58, 8F
→
04/19 13:58, , 9F
04/19 13:58, 9F
→
04/19 13:59, , 10F
04/19 13:59, 10F
→
04/19 13:59, , 11F
04/19 13:59, 11F
推
04/19 14:06, , 12F
04/19 14:06, 12F
→
04/19 14:08, , 13F
04/19 14:08, 13F
推
04/20 17:33, , 14F
04/20 17:33, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章