gpt4 book ai didi

我可以将 stdin 和 stdout 解析为 char* 然后给它们指针吗?

转载 作者:行者123 更新时间:2023-11-30 17:44:31 24 4
gpt4 key购买 nike

假设我有这些指示:

 char* stin, stout;

如果我做类似的事情:

 stin = (char*)stdin;
stout = (char*)stdout;

这两个指针总是返回标准输入和标准输出中的内容吗?或者我会得到某种错误。所以,如果我做类似的事情

fprint("Stdin contains %s:\n", *stin);

这会返回垃圾吗?

最佳答案

will this return garbage?

有可能。 stdinstdout 的类型为 FILE*。尝试将它们视为 char * 并将其打印为字符串是没有意义的,并且无法保证会发生或不会发生什么 - 行为未定义。

FILE* 旨在由标准 C 函数(例如 fread()、fputs() 等)进行操作。

另一个未定义的行为是 printf 语句本身。

 fprint("Stdin contains %s:\n", *stin);
^^ ^^^

通过使用%s,您可以保证参数是一个字符串,即char *,它是以空字节结尾的字符序列。 bit *stin 不是指针(char*),它是 char,因此类型不匹配。

关于我可以将 stdin 和 stdout 解析为 char* 然后给它们指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967946/

24 4 0
文章推荐: c - Malloc 和 free 错误
文章推荐: javascript - 使用 jQuery 在