如何使用带有指向数组的指针的SCANF?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用带有指向数组的指针的SCANF?相关的知识,希望对你有一定的参考价值。

编写一个程序,接受来自用户的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,'')-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循环的第一个表达式中使用了h1t1。这些表达式的结果是未使用的(因此错误),只是将它们留在外面,如我的例子中所示。

PS没有检查过很多代码,所以即使上面提到的更改也可能不正确。

以上是关于如何使用带有指向数组的指针的SCANF?的主要内容,如果未能解决你的问题,请参考以下文章

《带你学C带你飞》---指针和数组

当指针指向数组时,为啥 operator(*) 的值不起作用?

如何通过带有指针的函数传递 char 变量(示例已发送)?

怎么让一个二维指针指向一个二维数组

将带有指向数组的指针的类从 C++ 传递到 CUDA

带有指向 char 数组的指针的链表