gpt4 book ai didi

c - 输入一个函数 getWord (),它接受一个字符串并返回一个指向单词开头的指针

转载 作者:行者123 更新时间:2023-11-30 14:54:40 25 4
gpt4 key购买 nike

我需要输入一个函数 getWord (),它接受一个字符串和一个整数作为参数。该函数应该返回一个指向它所引用的单词开头的指针。如果word为0,则返回指向字符串中第一个单词的指针,如果word为1,则返回指向第二个单词的指针,依此类推。如果word大于或等于字符串中的单词数,必须返回 NULL。

运行示例:

ptr = getWord ("hello you", 1); / * "you" returns * / 

ptr2 = getWord ("a string", 0); / * "a" returns * /

ptr3 = getWord ("one word", 2); / * NULL returns * /

void getWord(char string[])
{
int i;

for (i = 0; i < strlen(string); i++)
{
if (isalpha(string[i]))
printf("%c", string[i]);

if (string[i] == ' ')
break;
}


}

最佳答案

我们初学者应该互相帮助。:)

给你。

#include <stdio.h>
#include <string.h>

char * getWord(const char *s, size_t n)
{
while ( ( s += strspn(s, " \t") ) != '\0' && n-- )
{
s += strcspn(s, " \t");
}

return *s ? (char *)s : (char *)0;
}

int main( void )
{
char *s = "Hi Adrian. How are you?";
size_t n = 0;

for (char *p; (p = getWord(s, n)) != NULL; ++n)
{
printf("%zu: %s\n", n, p);
}

printf("\nThere are %zu words in the string\n", n);

return 0;
}

演示程序的输出是

0: Hi Adrian. How are you?
1: Adrian. How are you?
2: How are you?
3: are you?
4: you?

There are 5 words in the string

如果你想得到这样的输出

0: Hi
1: Adrian.
2: How
3: are
4: you?

There are 5 words in the string

然后按照以下方式重写 main 中的循环

for (char *p; (p = getWord(s, n)) != NULL; ++n)
{
size_t len = strcspn(p, " \t");
printf("%zu: %*.*s\n", n, ( int )len, ( int )len, p);
}

关于c - 输入一个函数 getWord (),它接受一个字符串并返回一个指向单词开头的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46566179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com