无法弄清楚为什么 strlen 会破坏 C 中的字符数组

Cannot figure out why strlen is corrupting character array in C

我正在学习 C,但我不明白为什么这段代码不起作用。我正在反转字符串,但 strlen 似乎破坏了输入。

我知道 scanf 可能很麻烦,所以我尝试用 fgets 替换 scanf(我还不想知道)我得到了完全相同的输出。

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

int main()
{
    char inputstring[] = "";
    char outputstring[] = "";
    unsigned short int count = 0;

    printf("Enter a string: ");
    scanf("%s", inputstring);

    count = strlen(inputstring) - 1;

    printf("%s", inputstring);

    for(int i = 0;i <= count;i++)
    {
        outputstring[count-i] = inputstring[i];
    }

    printf("%s", outputstring);

    return 0;
}

当我编译并执行代码时,我得到:

输入字符串:你好 h

所以 printf 显示一个字符,然后是垃圾。

如果我注释掉 strlen 行,printf 会正确显示:

输入字符串:你好 你好

C 中的数组不是动态的,通过像您一样声明它们:

char inputstring[] = "";
char outputstring[] = "";

它们基本上是长度为 1 的固定大小的数组。 尝试用长度声明它们,例如

char inputstring[100] = "";
char outputstring[100] = "";