- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一年级的学生,目前正在学习“C”。这是我真正碰壁的第一个任务,任务是:
“创建一个函数,它接收一个字符串指针和一个字符串大小的指针。字符串本身包含一个句子。该函数将返回一个指向最大字典大小单词开头的指针(aba < ada )和使用大小指针的字长值。”* 您不能使用运算符 [] 和索引,只能使用指针来完成此任务!
示例:对于句子“aba ada aaa”,函数将返回“ada”,稍后将由 main 打印。
我感觉有点困难,我知道我需要遍历整个字符串,使用至少 2 个指针(?)我需要不断比较它们并放弃小的指针,直到最终,我得到最大的单词及其尺寸。但似乎找不到办法做到这一点。
我之前写过一段超长的代码,但并没有真正起作用,而且在我看来,我错过了一些关键的东西,而且这段代码不必很长。
int findHighest(char *ptr, int *size)
{
int nSize = 0, nSize1 = 0;
char *ptr3;
for (char *ptr1 = ptr; *ptr1 != '\0'; ptr1++)
{
for (char *ptr2 = ptr1; (*ptr2 != ' ') && (*ptr2 != '\0') ; ptr2++)
{
nSize++;
ptr3 = ptr2;
nSize1 = nSize;
}
}
}
void main()
{
char sentence[100] = { 0 };
printf("enter your sentence:\n");
gets(sentence);
char sentence2[100];
int size;
strcpy(sentence2, findHighest(sentence, &size));
sentence2[size] = '\0';
printf("the biggest word is:'%s'\n", sentence2);
system("pause");
}
最佳答案
如果您使用整数执行类似的任务,它会是什么样子?像这样的事情:
// With ints instead of (sub)strings:
int findHighest(int ints[], int *size) {
int greatest = ints[0];
for (int i = 1; i < *size; i++) {
if (ints[i] > greatest) greatest = ints[i];
}
return greatest;
}
对于您的实际问题来说,这是一个非常好的模型。问题是如何调整类似的内容来处理输入类型和形式的差异,并且必须避免使用索引,并要求返回最大字符串的长度。
但是在我们继续之前,让我们先解决一个可能让您感到困惑的问题。按照翻译,问题说“函数将返回一个指向最大单词开头的指针”,而在示例中,您说“函数将返回'ada'”。首先,不,该函数永远无法返回 "ada"
本身,因为那是一个数组,并且您无法在 C 中返回数组。但更重要的是,我读到了这个问题,你的函数是返回一个指向输入字符串中“ada”子字符串开头的指针。在您的示例中,如果您使用 puts()
打印该内容,那么您将看到 ada aaa
。
那么如何进行呢?让我们从正确的函数签名开始:
char *findHighest(char *string, int *size) {
接下来让我们观察一下,只要输入不包含前导空格,第一个单词的开头就与句子的开头相同:
char *greatest = string;
现在,您需要找到下一个单词的开头,并且当前单词的长度也应该很容易从中得出。给定指向下一个单词的指针,您可以通过 strcmp()
比较这两个单词,前提是您愿意假设单词之间的空格按字典顺序小于单词中出现的所有字母。对于所有 ASCII 兼容的单字节编码和 UTF-8 来说,情况确实如此:所有小于 ' '
的字符都是控制字符。但是,如果您想要更安全,则可以使用 strncmp()
代替,同时考虑单词长度。
当您浏览字符串时,您不仅需要跟踪指向迄今为止最大单词的指针,还需要跟踪它的长度。最后,您只需
*size = length_of_greatest;
return greatest;
}
这是一项学术练习,我将剩余的细节留给您解决。
关于c - 如何仅使用指针比较字符串的单词词典大小 (aba < ada),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54159651/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是一年级的学生,目前正在学习“C”。这是我真正碰壁的第一个任务,任务是: “创建一个函数,它接收一个字符串指针和一个字符串大小的指针。字符串本身包含一个句子。该函数将返回一个指向最大字典大小单词开头
我必须运行一个相当旧的程序代码,它使用 ABA-provider for JCE。所有类都可以在源文件夹中找到。但是,会出现 NoSuchProviderException:“JCE 无法验证提供程序
我正在尝试从 here 实现 Michael-Scott FIFO 队列。我无法实现他们针对 ABA 问题的解决方案。我收到此错误。 error: incompatible type for argu
我目前正在使用 C++11 开发无锁单链表,我的 popFront() 函数有问题——或者我至少应该说我知道它在某些情况下会出现问题。 无论如何,这就是我目前拥有的: std::shared_ptr
在书中C++ Concurrency in Action ,作者给出了一个使用hazard pointer实现无锁栈数据结构的例子。部分代码如下: std::shared_ptr pop() {
我在维基百科的实践书中调查了并发中的 ABA 问题,我阅读了以下内容 post 据我所知,ABA 问题的根本原因是在算法中我们检查的状态与以前相同,但算法暗示状态未被触及。 堆栈数据结构示例: 我们使
我读了一篇描述 ABA 问题的文章,但有些东西我无法理解。我有源代码,它无法运行,它类似于文章中的示例,但我不明白这个问题。这是文章 http://fara.cs.uni-potsdam.de/~js
在给定两个字符的出现频率(例如:x = 5)的情况下,建议一种使用两个字符(例如:“aabba”、“aba”)的模式构造 String 的有效方法, y = 4).问题是任何字符都不应重复超过两次。
请注意,我已经知道并了解 ABA problem .这个问题是关于 .NET 内存模型在 ABA 方面的行为。 在他对 Lock-Free LIFO Stack 的讨论中(2007 年 5 月 MSD
从 AIM 7 beta 2 到现在的 AIM 7 beta 6,GM - AIM 开始使用新的 .aba 文件格式来保存文件。这些文件过去位于我们可以访问的文件夹中程序文件,但是由于“性能提升”,A
我正在阅读 lock free boost 文档的一部分,它说“使用固定大小的数组来存储内部节点”以避免在 32 位机器上防止 ABA 问题。有人可以给我提示这部分在源代码中的位置吗?整个 boost
我有一种情况需要更新候选人的选票。 公民可以投票给这个候选人,每个候选人可以投一票以上。即一个人可以投 5 票,而另一个人可以投 2 票。在这种情况下,该候选人应获得 7 票。 现在,我使用 Djan
我正在基于此实现一个无锁队列 algorithm ,它使用计数器来解决 ABA 问题。但我不知道如何用 c++11 CAS 实现这个计数器。例如,从算法: E9: if CAS(&tail.pt
我正在尝试对字符串进行排序(为 punnetsquare 制作基因型)。我当前的实现是: unsorted_genotype = 'ABaB' sorted_genotype = sorted(lis
我需要运行一个服务程序,用 FO 为 abas-ERP continuous 编写。 我听说一些已经存在的脚本可以从 shell 调用服务程序。如果可能的话,我可以简单地使用一个 cronjob 来启
当使用比较和交换 (CAS) 技术编写无锁代码时,存在称为 ABA 问题的问题: http://en.wikipedia.org/wiki/ABA_problem 因此,仅比较值“A”是有问题的,因为
我想知道为什么下面的函数会出错: #include using namespace std; class Saba { public: Saba(){ cout (sabaPtr);
在一些论坛和书籍中(即 C++ Concurrency in Action)有一个很好的多生产者/多消费者堆栈的例子,并且在 pop 实现中他们通常这样做以下内容: // head is an std
是否有任何 FO 函数或 AJO 函数来获取在屏幕编辑器中声明的必填字段? 最佳答案 据我所知FO中没有这个功能。前段时间我自己需要这些信息,我从 xml 屏幕描述文件中获取了这些信息。 必填字段看起
我是一名优秀的程序员,十分优秀!