c - 尝试反转字符串会导致空字符串

标签 c char reverse c-strings function-definition

我是 C 新手,我正在尝试执行一些函数来反转单词,这里是我的代码:

#include <stdlib.h>
#include <string.h>

// ƒ to revers the word
void lettreCount(char *saisi, int length){
    int i, j = 0;
    char revers[length];

    for (i = length; i  >= 0; --i){  //loop
        *(revers+j) = saisi[i];
        ++j;
    }
    printf("%s\n",revers);
}


int main(){
    char text[30]; //Array for text
    int len;

    printf("Saisissez le text:\n");
    gets(text);

    len = strlen(text);

    lettreCount(text, len);
    
}

但是我在终端中一直得到一个空字符串,我应该怎么做?谢谢

最佳答案

C 中的字符串以空字节终止。因此,当您使用 i = length 开始循环时,放入新数组中的第一个字符是空字节。这意味着您有一个空字符串。

从索引 length-1 处开始循环,以便从字符串的最后一个字符开始。然后在循环之后,您需要手动将终止空字节添加到目标数组。

char revers[length+1];
for (i = length-1; i  >= 0; --i){  //loop
    *(revers+j) = saisi[i];
    ++j;
}
revers[length] = 0;

关于c - 尝试反转字符串会导致空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70633899/

相关文章:

C 打印一个没有值(value)的字符

c++ - 如何使用 Strtok 对 Const char* 进行标记?

在 C 中使用反射/位反转输入计算 CRC16

c++ - 尝试从命令行参数读取字符串 "$$"

c - 链接列表反向递归功能不起作用

R中的反向轴

c - memcpy 期间的段错误

C-kill系统调用不会唤醒进程

c++ - 在 main() 之前在编译时或运行时初始化函数指针的全局数组

c - 如何知道传递给函数的 char 数组的大小(以字节为单位)?