suchenxiang 发表于 2022-2-22 18:05:54

为什么我定义了一个占15个字符的字符串,输入字符的空间超过了15也能全部输出

#include<stdio.h>

int main()
{
    char st;
    printf("input string:\n");
    gets(st);
    puts(st);
}

jackz007 发表于 2022-2-23 11:22:52

这就意味着你已经侵占了其他变量的存储空间,会直接破坏其它变量的内容,如果被破坏这个变量需要使用,会导致程序崩溃或者运行结果出轨。

ba21 发表于 2022-2-22 18:16:27

gets不检测你的数组长度。
也就意味着你自行分配足够长度的数组,并限制输入字符的长度。以确保程序的健全。

c_cpp_python 发表于 2022-2-23 08:08:20

c 相信程序员

想入门的新人 发表于 2022-2-23 09:34:53

要想避免内存污染问题 ,就要用fgets函数,gets容易造成内存污染

fgets(st,sizeof(st),stdin);
页: [1]
查看完整版本: 为什么我定义了一个占15个字符的字符串,输入字符的空间超过了15也能全部输出