gpt4 book ai didi

代码块,在控制台中粘贴文本将其关闭

转载 作者:行者123 更新时间:2023-11-30 16:37:05 25 4
gpt4 key购买 nike

我正在做一项作业,要求我将给定的文本复制粘贴到控制台中,该文本由多行组成,每行都有我需要分析的数据。无论如何,问题是当我选择文本并将其粘贴到控制台时,控制台会关闭。仅当我尝试粘贴超过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com