[英]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.