- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一项作业,要求我将给定的文本复制粘贴到控制台中,该文本由多行组成,每行都有我需要分析的数据。无论如何,问题是当我选择文本并将其粘贴到控制台时,控制台会关闭。仅当我尝试粘贴超过 1 行时才会出现此问题。经过一些测试后,我尝试粘贴的任何文本都超过了。
我正在使用 C 语言工作,我正在尝试将其存储到字符串中:
int main()
{
char text[1000];
gets(text);
printf("%s",text);
return 0;
}
例如,如果我尝试粘贴:
8C TS KC 9H 4S 7D 2S 5D 3S AC
工作正常
但如果我尝试粘贴:
8C TS KC 9H 4S 7D 2S 5D 3S AC
5C AD 5D AC 9C 7C 5H 8D TD KS
它关闭控制台。我很好奇它为什么这样做。
最佳答案
首先:不要使用gets
,这个函数不安全,因为它不防止缓冲区溢出。如果您输入超过 999 个字符,您将得到缓冲区溢出。请改用 fgets
。
你所描述的是关于你的终端,而不是C语言。您使用哪个终端?
取决于选择的文本量(例如您选择了多行),如果您粘贴,还会复制新行 ('\n'
)在你的终端上,粘贴的新行就像你按下了 ENTER 键一样,输入该行(gets()
返回),printf
在终端上打印该行,然后程序结束。根据您打开终端的方式,终端也可能会立即关闭程序关闭后。
这与 C 无关,而与你如何使用终端有关。
<小时/>编辑
从标题中我就看出您使用的是Codeblock IDE,对吗?如果您单击运行,然后打开一个控制台并执行您的程序。大多数时候,标准设置是控制台立即关闭程序结束后。我不知道您是否可以更改这些设置代码块配置(例如“退出时不要关闭终端”)。如果你不能改变这个配置,你可以像这样结束你的程序,所以该终端不会立即关闭:
#include <stdio.h>
int main(void)
{
// your progam here
printf("Press ENTER to end");
getchar();
return 0;
}
我个人不喜欢这样,控制台上的程序不应该这样做(除非出于某种原因有必要)。更好的事情是你打开终端,进入你编译的程序目录并执行你自己吧。因此,当程序结束时,终端保持事件状态。
关于代码块,在控制台中粘贴文本将其关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48128796/
我是一名优秀的程序员,十分优秀!