ANSI C -每行计数单词和字母[已关闭]

oaxa6hgo  于 2023-03-22  发布在  其他
关注(0)|答案(1)|浏览(99)

这个问题不太可能帮助任何未来的访问者;它只与一个小的地理区域、一个特定的时刻或一个非常狭窄的情况有关,而这些情况通常不适用于Internet的全球用户。要帮助更广泛地应用此问题,请访问visit the help center
10年前关闭了。
我正在做一个个人项目,但我不知道该怎么做:

  • 计算单词(每个单词花费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 USD..现在“ipsum”也有5个字母,所以另一个$5 USD..“dolor”有5个,所以其他$5 USD...“sit”有3个字母,所以让我们总结另一个$4 USD...“ameth”有5个,所以$5更多...
这篇文章的成本是:24美元

bgtovc5b

bgtovc5b1#

一般来说我会做什么:
1.加载文本-除了错误处理/输入验证/溢出之外,您已经有了正确的想法。
1.使用strtok() from string.h将输入标记为单词。但它基本上使用了一个分隔符(s)由您提供,用于拆分输入字符串(可能是txt)转换为所需的令牌(例如- delimiter =“space”将把输入分割成每个“简单”单词,其中空格是新单词的唯一分界)。(通常在循环中调用strtok)是下一个标记或“单词”。
1.对strtok生成的每个cstring结果使用strlen来计算每个“单词”的大小
是的,我知道我们讨厌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;
}

标记化语法看起来有点奇怪的原因是:
Description of STRTOK function and explanation of its syntax
警告:从链接中可以明显看出,strtok修改了你传递的原始字符串。因此,如果你想保留它用于其他光荣的目的,请在某个地方保存一个安全的副本。

相关问题