[英]reversing a string in c with pointer
我只是在學習C,並且正在嘗試編寫一個函數,該函數不使用索引而是通過指針而不使用malloc來反轉字符數組(字符串):
#include <stdio.h>
#include <string.h>
char* reverse(char* chararray)
{
char *forward = chararray;
char *reversed = &chararray[strlen(chararray)-1];
while (reversed > forward) {
char revTmp = *reversed;
char fwdTmp = *forward;
*reversed-- = fwdTmp;
*forward++ = revTmp;
}
return reversed;
}
int main()
{
char string[] = "dlrow olleh";
printf("%s\n",reverse(string));
return 0;
}
現在的輸出是world
,應該是hello world
但它在中間中斷,我不知道為什么。 我一定錯過了一些東西。
reversed
后將指向字符串的中間。 因此,您將僅打印字符串中從該位置開始的內容(在本例中為“世界”)。 您也可以通過打印string
來驗證這一點,並查看它確實被反轉了。
而是返回原始指針chararray
。
您返回的是reversed
,它指向字符串的中間。
您不需要返回任何內容,因為您將在原處反轉輸入字符串。
換句話說,您正在使用相同的存儲塊( string
)進行輸入和輸出。
只需調用該函數,然后打印該字符串即可:
reverse(string);
printf("%s\n",string);
除此之外,您還可以更改此設置:
char* reverse(char* chararray)
{
...
return reversed;
}
對此:
void reverse(char* chararray)
{
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.