[英]Reversing a string on C language
在這個程序中,允許用戶輸入最多 20 個字母的單詞,這些單詞存儲在另一個數組中並從末尾開始打印。 但是我的代碼有錯誤,我輸入一個單詞后程序輸出單個字母。 那是我的代碼。
#include <stdio.h>
int main(void) {
char user[21]; // created an array and let users enter letters
char reverse[21]; // create an array and store the reversing string
printf("Please enter the word that you want to reverse: \n");
scanf("%20s", user);
int length = sizeof(user) / sizeof(user[0]);
int rever_index = 0;
for (int i = 0; i < length; i++) {
reverse[i] = user[length - i];
rever_index++;
}
printf("reverse value are %s\n", reverse);
return 0;
}
測試結果:請輸入您要反轉的單詞
細繩
反向值是 Z。如何修改我的代碼?
strlen
#include <string.h>
。(我試圖在評論中添加這個解釋,但我沒有足夠的聲譽)
#include <stdio.h>
#include <string.h>
int main(void) {
char user[21]; // created an array and let users enter letters
char reverse[21]; // create an array and store the reverseing string
printf("Please enter the word that you want to reverse: \n");
scanf("%20s", user);
int length = strlen(user);
int rever_index = 0;
for (int i = 0; i < length; i++) {
reverse[i] = user[length-1-i];
rever_index++;
}
reverse[length] = '\0';
printf("reverse value are %s\n", reverse);
return 0;
}
有騙子。 但是,只是為了好玩,這里有一個班輪。
/**
* Reverses a string
* @param str is the string to reverse.
* @returns a pointer to the resulting string
*/
char *rev(const char *str) {
// get length of string
size_t len = strlen(str);
// allocate a string of the appropriate size
char* r = calloc(len + 1);
// work back down the string
const char *s = str;
for (; *s; ++s)
r[len - (s - str) - 1] = *s;
return r;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.