gpt4 book ai didi

c - 函数根据数字删除单词 - C 编程

转载 作者:行者123 更新时间:2023-11-30 19:06:47 25 4
gpt4 key购买 nike

我已经被这个问题困扰了四天了:

编写一个函数skipWords()​ ​​,它接受一个名为​ ​​的字符串​​,名为​ ​​句子​​ ​和一个​​名为​的整数​ ​​单词作为参数。​​函数应该返回一个指针​ ​到句子的子串​。​​函数​​应该跳过​​​由​​指示​的​​​单词​数​​​参数词。

如果单词是,例如,0,那么是一个指向字符串开头的指针​​​句子​​​应该返回​​(也就是说,没有​​跳过任何单词​​)。​​如果单词​​为1,​​则​​​​指向​​​句子​第二个单词​的指针​​应该​返回​​(即,​​一个​​单词​​被跳过) ,​​​等​ ​ ​要了解​​​它应该如何工作,请参见下面的示例。​ ​​函数​​可能不​​打印​任何内容​​在屏幕上​​或从用户处获取任何​​输入。​​如果单词​​​大于​​或​​等于​​​到句子中的单词数​​,则应返回指针​ ​NULL​​。

示例:char​​ ​*ptr1,​ ​*ptr2,​ ​*ptr3,​ ​*ptr4;
ptr1​ ​=​ ​skipWords(​“你去那里”​,​ 1);​​ ​/*​ ​ptr1​ ​指向​ ​“你去”​ ​*/
ptr2​ ​=​ ​skipWords(​“你去吧”​,​ ​2);​​ ​/*​ ​ptr2​ ​指向​ ​“去”​ ​*/
ptr3​ ​=​ ​skipWords(​“a​ ​string”​,​ 0);​ ​​/*​ ​ptr3​ ​指向​ ​“a​ ​string”​ ​*/
ptr4​ ​=​ ​skipWords(​“一个​​单词”​,​ 2);​ ​​/*​ ​ptr4​ ​是NULL​ ​*/

得到代码:

int skipWords(char sentence[], int words)
{
int i;
int len;

len =strlen(sentence);

if(words == 0)
{
sentence[i];
}

if(words == 1 && words<len)
{

*newsentence[i]=sentence[i];
while (isalpha(newsentence[i])) //checking for the first blank space
{
i++;
}
newsentence[i] = '\0';

*sentence[i]= newsentence[i]-i++; //new string without the first word
}

if(words == 2 && len<words)
{

*newsentence[i]=sentence[i];
// and i am lost


else if (words>=len)
*sentence=NULL;

}

int main()
{

char *ptr1, *ptr2, *ptr3, *ptr4;
ptr1= skipWords("there you go", 1);
ptr2=skipWords("there you go", 2);
ptr3=skipWords("a string", 0);
ptr4=skipWords("a word",2);

printf("%s\n", ptr1);
printf("%s\n", ptr2);
printf("%s\n", ptr3);
printf("%s\n", ptr4);

return 0;
}

但我完全迷失了。

最佳答案

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

你在这里

#include <stdio.h>
#include <ctype.h>

char * skipWords( const char *s, size_t n )
{
if ( n )
{
while ( isblank( ( unsigned char )*s ) ) ++s;

do
{
while ( *s && !isblank( ( unsigned char )*s ) ) ++s;
while ( isblank( ( unsigned char )*s ) ) ++s;
} while ( *s && --n );
}

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

int main(void)
{
char *ptr1, *ptr2, *ptr3, *ptr4;

ptr1 = skipWords( "there you go", 1);

if ( ptr1 ) puts( ptr1 );
else puts( "NULL" );

ptr2 = skipWords( "there you go", 2 );

if ( ptr2 ) puts( ptr2 );
else puts( "NULL" );

ptr3 = skipWords( "a string", 0 );

if ( ptr3 ) puts( ptr3 );
else puts( "NULL" );

ptr4 = skipWords( "a word", 2);

if ( ptr4 ) puts( ptr4 );
else puts( "NULL" );

return 0;
}

程序输出为

you go
go
a string
NULL

对于您的代码,对于初学者来说,函数至少应该声明为

char * skipWords(char sentence[], int words);
^^^^^^

而不是

int skipWords(char sentence[], int words);
^^^

甚至在代码的一开始就使用了未初始化的变量i,它会产生程序的未定义行为。

int i;
int len;

len =strlen(sentence);

if(words == 0)
{
sentence[i];
^^^^
}
// ...

关于c - 函数根据数字删除单词 - C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47653458/

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