3

私は個人的なプロジェクトに取り組んでいますが、その方法がわかりません:

  • 単語を数えます (各単語の費用は 5 米ドルです)
  • 単語ごとに文字数を数えます (単語が 4 文字未満の場合は 4 米ドル、4 文字を超える場合は 5 米ドルかかります)

これまでの私のコードは次のとおりです。

char txt[50];

printf("Introduce a text: ");
scanf("%s",&txt);
for(i=1; i <= N; i++){
  fgets(txt,50,stdin);
}

予想される出力の例:

The cost is: $24 USD

次はどうなるかわかりません。助けていただければ幸いです:)ありがとう。

詳細説明:

ユーザーがテキストを紹介するとします。

Lorem ipsum dolor sit ameth

したがって、プログラムは各単語を調べます。たとえば、「Lorem」には 5 文字があり、その単語には 5 米ドルの費用がかかります..今度は「ipsum」にも 5 文字があるので、別の 5 米ドル..「dolor」には 5 があるので、その他の $5 USD... "sit" は 3 文字なので、さらに $4 USD を合計しましょう... "ameth" は 5 文字なので、さらに $5...

このテキストの費用は: $24 USD

4

1 に答える 1

5

一般的な用語で私がすること:

  1. テキストを読み込みます - エラー処理/入力検証/オーバーフローは別として、あなたは正しい考えを持っています.

  2. strtok()fromを使用して入力を単語にトークン化しますstring.h。それを調べてください、しかしそれは基本的にあなたが提供した区切り文字を使用して、入力文字列(おそらくtxt)を目的のトークンに分割します(例- delimiter = "space" は入力をスペースがある各「単純な」単語に分割します新しい単語の唯一の境界)。各反復での出力 (strtok通常はループで呼び出します) は、次のトークンまたは「単語」です。

  3. strlenによって生成された結果の各 cstring で使用してstrtok、各「単語」のサイズをカウントします

はい、私たちは cplusplus.com を嫌いますが、この例は一見問題ないように見えます (確認済み - 動作します):

/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
  return 0;
}

トークン化の構文が少し奇妙に見える理由は、次のとおりです。

STRTOK関数の説明とその構文の説明

警告: リンクから明らかなように、strtok渡す元の文字列を変更します。したがって、他の輝かしい目的のためにそれを保持したい場合は、安全なコピーをどこかに保管してください。

于 2012-10-25T18:51:41.573 に答える