我是C编程语言的新手。我正在尝试反转char数组中的元素。实际上,我几乎扭转了局面,但是有些事情我做不到。这是代码:
void q2_reverseTheArray(char word[100]){
int lentgh=sizeof(word);
int j;
for(j=length+1; j>=0; j--){
printf("%c", word[j]);
}
代码颠倒了数组,但添加了另一个字母。
这里有一个有效的示例:
#include <stdio.h> // printf
#include <stdlib.h> // malloc, free
#include <string.h> // strlen
int main() {
char* s = "hello";
size_t l = strlen(s);
char* r = (char*)malloc((l + 1) * sizeof(char));
r[l] = '\0';
int i;
for(i = 0; i < l; i++) {
r[i] = s[l - 1 - i];
}
printf("normal: %s\n", s);
printf("reverse: %s\n", r);
free(r);
}
您的代码在length + 1
中是错误的,应该说length - 1
。
并且您必须注意终止'\0'
。
正确的代码是
for(j=length-1; j>=0; j--){
printf("%c", word[j]);
这是因为字符串的元素从0
到length-1
进行了索引。例如,>
word == "Hello"
length == 5
word[0] == 'H'
word[1] == 'e'
word[2] == 'l'
word[3] == 'l'
word[4] == 'o'
我希望这将是连击解决方案。