我正在做个人项目,但我不知道该怎么做:
到目前为止这是我的代码:
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美元
一般来说我会做什么:
加载文本 - 除了错误处理/输入验证/溢出,你有正确的想法.
使用strtok()
from 将输入标记为单词string.h
.查找它,但它基本上使用你提供的分隔符将你的输入字符串(可能txt
)分成所需的标记(例如 - delimiter ="space"会将输入分成每个"简单"字,其中空格是新词的唯一划分).它在每次迭代时的输出(strtok
通常在循环中调用)是下一个标记或"单词".
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
传递它的原始字符串.因此,如果你想保留它用于其他一些光荣的目的,请在某处保存一份安全的副本.