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

时间:2013-11-14 01:41:41

标签: c linux

说我有这些指示:

 char* stin, stout;

如果我这样做:

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

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

这样的事情
fprint("Stdin contains %s:\n", *stin);

这会回垃圾吗?

1 个答案:

答案 0 :(得分:0)

  

这会回垃圾吗?

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

FILE *意在由标准C函数操作,例如fread(),fputs()等。

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

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

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