【发布时间】:2019-06-07 03:37:08
【问题描述】:
我在第一年,目前正在学习“C”。 这是我第一个真正碰壁的任务,任务是:
"创建一个函数,它接收一个字符串指针和一个字符串大小的指针。字符串本身包含一个句子。该函数将返回一个指向最大字典大小的单词开头的指针(aba
示例:对于句子“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");
}
【问题讨论】:
-
让我们从
findHighest函数实际返回一些东西开始。你承诺你会用声明的char结果,但从来没有真正这样做过。其次,strcpy不接受char作为任何一个论点,所以这显然也是错误的。 -
...当然,问题描述说该函数应该返回一个指针,而不是个人
char,所以在弄清楚什么 i> 返回的指针。 -
知道了,但我不知道我将返回什么以及何时返回,我的意思是如果我假设该句子仅包含 3 个单词,我的意思是我可能可以做到,但如果它更长?我似乎无法理解如何在整个句子中继续使用指针,比较其中的所有单词并返回正确的单词。请原谅我的无知,但无法理解有关 strcpy 的评论。
-
问题是从其他语言翻译过来的吗?措辞“最大的字典大小的单词”在英语中根本不是惯用的,因为它似乎意味着什么。我自己会说更像“按字典顺序排列的最后”,甚至是“按字典顺序排列的最伟大”。
-
是的。尽我所能翻译它:S
标签: c arrays string function pointers