[英]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循環的第一個表達式中使用了h1
和t1
。 這些表達式的結果是未使用的(因此出現錯誤),就像我的示例一樣,將它們省略掉。
PS並未對代碼進行太多檢查,因此即使進行了上述建議的更改,它也可能不正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.