C编程中的反转char数组

问题描述 投票:0回答:3

我是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]);
}

代码颠倒了数组,但添加了另一个字母。

c arrays char reverse
3个回答
1
投票

这里有一个有效的示例:

#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'


3
投票

正确的代码是

for(j=length-1; j>=0; j--){
   printf("%c", word[j]);

这是因为字符串的元素从0length-1进行了索引。例如,>

word == "Hello"
length == 5
word[0] == 'H'
word[1] == 'e'
word[2] == 'l'
word[3] == 'l'
word[4] == 'o'

0
投票

我希望这将是连击解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.