ANSI C - 每行计算单词和字母

Dan*_*iel 3 c text ansi count

我正在做个人项目,但我不知道该怎么做:

  • 计算单词(每个单词花费$ 5 usd)
  • 计算每个单词的字母数(如果单词少于4个字母需要4美元,如果超过4个字母则需要5美元)

到目前为止这是我的代码:

char txt[50];

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

预期输出的示例:

The cost is: $24 USD
Run Code Online (Sandbox Code Playgroud)

我只是不知道下一步,任何帮助将不胜感激:)谢谢.

更多解释:

假设用户介绍了一个文本:

Lorem ipsum dolor sit ameth
Run Code Online (Sandbox Code Playgroud)

因此程序将查看每个单词,例如"Lorem"它有5个字母,它将花费5美元这个单词.现在"ipsum"也有5个字母,所以另外5美元.."dolor"有5个,所以其他5美元......"坐"有3个字母,所以我们总结另外4美元......"ameth"有5个,所以再多5美元......

本文费用为:24美元

im *_*sed 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;
}
Run Code Online (Sandbox Code Playgroud)

令牌化语法看起来有点奇怪的原因是因为:

STRTOK函数的说明及其语法说明

警告:从链接中可以看出,修改了strtok传递它的原始字符串.因此,如果你想保留它用于其他一些光荣的目的,请在某处保存一份安全的副本.