gpt4 book ai didi

c++ - 将原始指针移动到创建的函数中的下一个字符

转载 作者:行者123 更新时间:2023-11-30 04:49:33 25 4
gpt4 key购买 nike

我有一个作业,我必须使用指针删除单词开头的空格,修改原始单词并返回修改后的单词。我唯一得到的是函数名称/参数必须如下所示:

char* trim(char *str)

并且在 main 函数中必须是这样的:(注释显示预期的输出)

char str[] = "   Hello cpp", *newstr;
cout << "start" << str << "end" << endl; // start Hello cppend
newstr = trim(str);
cout << "start" << str << "end" << endl; // startHello cppend
cout << "start" << newstr << "end" << endl; // startHello cppend

我创建的函数如下所示:

char* trim(char *str){
while(*str<33){
str++;
}
cout<<str<<endl;
return str;
}

想法是,当当前指针的值为空格时(*str < 33) 我想将指针的地址移动到下一个字符。我使用了“while”,所以它会移动到下一个位置,直到它指向一个不是空格的值。

返回时一切正常。 “newstr”不带空格返回,输出是“startHello cppend”,当我输出 str in the function 它显示没有空格的文本。但原始值保持不变。 main 中的输出仍然是 start Hello cppend

为什么当我使用 str++ 在函数中移动指针时,原始指针没有改变,在 main 函数中它仍然带有空格,但函数中的 str 显示没有空格?

最佳答案

从您的第一段来看,您似乎实际上应该修改数组以删除空格,而不是简单地指向第一个非空格。

作为伪代码:

char * trim(char * str)
{
var ptrFirstNonSpace=str, ptrCurr=str
while ptrFirstNonSpace points to a space and not to end of string
increment ptrFirstNonSpace
while ptrFirstNonSpace does not point to end of string
copy char from pFNS to ptrCurr
increment both ptrCurr and pFNS
set terminating char at ptrCurr
return str
}

关于c++ - 将原始指针移动到创建的函数中的下一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55361145/

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