gpt4 book ai didi

c - 逆向词,指针法

转载 作者:行者123 更新时间:2023-11-30 16:09:02 26 4
gpt4 key购买 nike

我想编写一种基于指针的方法来逐个单词地反转一个句子。
我不想使用多余的空格或常用方法,因此想出了直接替换方法。

我想就您可能错过的任何事情或此方法有什么问题获得您的反馈。

int main() {
char *s="lets test reverse";
char *rev = malloc(strlen(s)+1);
int slen = strlen(s)-1;
char *sptr,*endptr,*prevpos;
sptr = endptr = &s[slen]; //Mark end of string
int i=0;
int h=0;
while(s[h] != '\0') {
//Count how far is the first space from the end of the string.
while(*sptr != ' ' && sptr > s) {
sptr--;
}
// hold the refernce for future use.
prevpos = sptr;

//Once a ' ' is hit, move one char ahead to being copy.
if(sptr > s)
sptr++;

// Copy ,starting from that word index till its end.
for(sptr,i;sptr <= endptr;sptr++,i++) {
rev[i] = *sptr;
}

//If we've reached the start of the origString then dont add it back
if(prevpos != s)
rev[i] = *prevpos;i++;

sptr = endptr = --prevpos;
h++;
}
printf("%s\n", rev);
}


输出:反向测试让

要求退款

最佳答案

您的循环从字符串的末尾开始,并向后进行。您缺少的是已经开始的测试-此时您应该以NULL终止反向字符串并退出循环。

添加此:

if (prevpos == s)
{
rev[i] = 0;
break;
}


之前:


sptr = endptr = --prevpos;
h++;

关于c - 逆向词,指针法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59223865/

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