簡體   English   中英

如何將SCANF與指向數組的指針一起使用?

[英]How can I use SCANF with a pointer to an array?

編寫一個程序,該程序接受用戶的C字符串輸入並反轉該字符串的內容。 您的程序應通過使用兩個指針來工作。 “ head”指針應設置為字符串中第一個字符的地址,而“ tail”指針應設置為字符串中最后一個字符(即終止null之前的字符)的地址。 程序應交換這些指針引用的字符,將“ head”增加以指向下一個字符,將“ tail”減少以指向倒數第二個字符,依此類推,直到所有字符都被交換並且整個字符串反轉。 預期的行為:輸入輸入文本嗨,大家好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循環的第一個表達式中使用了h1t1 這些表達式的結果是未使用的(因此出現錯誤),就像我的示例一樣,將它們省略掉。

PS並未對代碼進行太多檢查,因此即使進行了上述建議的更改,它也可能不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM