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 美元……“坐”有 3 个字母,所以让我们再总结一下 4 美元……“ameth”有 5 个,所以多 5 美元……

这篇文章的成本是:24 美元

4

1 回答 1

5

我一般会做什么:

  1. 加载文本 - 除了错误处理/输入验证/溢出之外,您的想法是正确的。

  2. strtok()使用from将输入标记为单词string.h。查找它,但它基本上使用您提供的分隔符将您的输入字符串(可能txt)拆分为所需的标记(例如 - delimiter = "space" 会将输入拆分为空格所在的每个“简单”单词新词的唯一分界)。它在每次迭代中的输出(您strtok通常在循环中调用)是下一个标记或“单词”。

  3. 使用strlen产生的每个结果 cstringstrtok来计算每个“单词”的大小

是的,我知道我们讨厌 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 回答