我正在开展个人项目,但我不知道该怎么做:
到目前为止,这是我的代码:
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美元
答案 0 :(得分:5)
我会做一般性的事情:
加载文本 - 除了错误处理/输入验证/溢出之外,您还有正确的想法。
使用strtok()
中的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;
}
令牌化语法看起来有点奇怪的原因是:
Description of STRTOK function and explanation of its syntax
警告:从链接中可以看出,strtok
修改了传递它的原始字符串。因此,如果你想保留它用于其他一些光荣的目的,请在某处保存一份安全的副本。