文字列のスペースを「*」に置き換えて定義した文字列があります。例:ライブラリのみを使用して文字列内の単語を検索するiostreamとcstring
suffix*i*am*using*stackoverflow*text1suffix*text2suffix
文の最初の単語は「接尾辞」です。私がする必要があるのは、文章をstrtokを使って別々の単語に分けて、の末尾がのすべての単語を出力することです。出力は次のようになります。
text1suffix, text2suffix
トリッキーな部分は、私が唯一のライブラリにをCStringののiostreamとを使用してこれを行うために必要があるということです。私が何をしたか
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s[256], t[256], *p, l, ok;
strcpy(s, "suffix*i*am*using*stackoverflow*text1suffix*text2suffix");
p = strtok(s, "*");
strcpy(t, p);
l = strlen(p);
p = strtok(NULL, "*");
while(p) {
ok = 1;
for(int i = strlen(p)-1; i >= 0; i--) {
if(l-(strlen(p)-i) > 0) {} else break;
if(p[i] == t[l-(strlen(p)-i)]) { }
else { ok = 0; break; }
}
if(ok == 1) cout << "*" << p;
p = strtok(NULL, "*");
}
return 0;
}
は(最後の1から始まる)すべての単一の文字をチェックして、彼らは最初の単語と同じであるかどうかを確認です:
は、これは私のコードです。
質問は次のとおりです。少ない労力でこれを行う方法はありますか?あるいは、この問題を解決する他の方法がありますか?私の方法は良くないように感じる。
「strcmp」が役に立ちます – tkausl
私に例を挙げてもらえますか? – Radu
[ここにある](http://en.cppreference.com/w/c/string/byte/strcmp) –