在C编程中反转char数组

Reversing char array in C programming

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

代码反转了数组,但添加了另一个字母。

正确的代码是

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'

这里有一个工作示例:

#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] = '[=10=]';
  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

而且你要注意终止符'[=13=]'

我希望这是更好的解决方案。

Without string.h header file

 main()
{
    char str1[100], str2[100];
    int i, k, j;
    scanf("%s", &str1);
    for(i=0; str1[i] != '[=10=]'; i++ );
    j=i-1;
    for(k=0; k<=i; k++)
    {
        str2[k]=str1[j];
        j--;
    }
    for(k=0; k<i; k++)
        printf("%c", str2[k]);
    return 0;
}