编写一个程序,接受来自用户的C字符串输入并反转字符串的内容。你的程序应该使用两个指针。 “head”指针应设置为字符串中第一个字符的地址,“tail”指针应设置为字符串中最后一个字符的地址(即终止null之前的字符)。程序应该交换这些指针引用的字符,增加“head”指向下一个字符,减去“tail”指向倒数第二个字符,依此类推,直到所有字符都被交换为止字符串反转。预期行为:输入输入文本hello guys syug olleh
这是任务任务。这是我的代码:
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main()
{
char inp_str[50];
char* hl;
char *tl;
cout<<"Enter string ";
scanf("%s",inp_str);
hl=&inp_str[0];
tl=strchr(inp_str,'\0')-1;
for (hl; hl <= tl; hl++){
for(tl;tl>= hl;tl--) {
char temp_val;
temp_val=*hl;
*hl=*tl;
*tl=temp_val;
}
}
cout<<inp_str;
return 0;
}
我收到了一个错误
"expression result unused [-Wunused-value]" for tl in for(tl;tl>= hl;tl--) and hl in for (hl; hl <= tl; hl++).
数组名称是指向(数组的第一个元素)的指针。
scanf("%s", inp_str);
您的主要错误是您使用了两个循环,您应该只使用一个循环
不
for (hl; hl <= tl; hl++){
for(tl;tl>= hl;tl--)
{
char temp_val;
temp_val=*hl;
*hl=*tl;
*tl=temp_val;
}
}
但
for (; hl <= tl; hl++, tl--)
{
char temp_val;
temp_val=*hl;
*hl=*tl;
*tl=temp_val;
}
想想反转字符串的过程,该过程是否需要嵌套循环,还是只需要一个循环?
您的编译器错误发生是因为您在for循环的第一个表达式中使用了h1
和t1
。这些表达式的结果是未使用的(因此错误),只是将它们留在外面,如我的例子中所示。
PS没有检查过很多代码,所以即使上面提到的更改也可能不正确。