C fgets 字符串长度不限于输入

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

我很困惑,尽管我提供的字符数组

mystring
最多只能有5个字符长,但如果
fgets
提供了更大的限制,长度可以超过5。

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

int main() {
    char mystring[5];

    fgets(mystring, 10, stdin);

    printf("len: %d", strlen(mystring));
}

如果我输入 8 个或更多字符并按 Enter,则

mystring
的长度为 9。考虑到数组
mystring
的长度设置为 5,这是如何发生的?

c buffer stdin
1个回答
0
投票
当您只有 5 个有效字节可供读入时,您

可以 告诉 fgets

 读取 10 个字节。但随后您就处于“未定义行为”的领域,程序可能会按预期“工作”,或者可能会发生其他任何情况。

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