簡體   English   中英

為什么這個 C 反向字符串 function 不起作用?

[英]Why does this C reverse string function not work?

我很困惑為什么當我反轉打印時得到一個空字符串。 在每次迭代中打印出字符似乎工作正常。

Output:

original string: testing
g
n
i
t
s
e
t
reversed:
#include <stdio.h>
#include <string.h>

void reverse_string(char string[]) {
  int str_len = strlen(string);
  char reversed[20];

  int j = 0;
  for (int i = strlen(string); i>= 0; i--) {
    char tmp = string[i];
    reversed[j] = tmp;
    printf("%c\n", reversed[j]);
    j++;
  }
  reversed[j] = '\0';

  printf("reversed: %s", reversed);
}

int main (void) {
  char string[8] = "testing";
  printf("original string: %s", string);
  reverse_string(string);
  return 0;
}

istrlen(string)開始,它指向終止'\0'字符。 該字符被復制到reversed字符串中的 position 0 中,因此之后的任何字符都不被視為字符串的一部分。

for (int i = strlen(string); i>= 0; i--) {
    char tmp = string[i];

string[strlen(string)]根據定義總是字符串終止字符'\0' 您必須從strlen(string)-1開始循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM