【发布时间】:2013-09-05 16:59:08
【问题描述】:
typedef struct pixel_type
{
unsigned char r;
unsigned char g;
unsigned char b;
} pixel;
buffer = (int *) malloc (sizeof(pixel) * stdin );
我不断收到一条错误消息,提示“二进制操作数无效*(具有无符号整数”和“struct _IO_FILE *)”。该结构是在函数之外定义的,因此它是通用的。缓冲区是在 main 中定义的。如果需要,我可以提供更多代码。我的问题是什么?
编辑:好吧,显然我有点困惑。我要做的是传入一个文件,然后为该文件分配足够的空间。我正在考虑使用 FILE 函数来传递文件,然后使用它,但希望只使用“stdin”。这是不允许的吗?这是用 C 语言编写的。只是标记了 C++,希望其他人可能会看到类似的问题。
抱歉这个愚蠢的问题。对整个 C 来说并不陌生,但对 malloc 来说却是新的。二年级学生:P
【问题讨论】:
-
这根本没有任何意义。或者您想从
stdin获得一些意见?然后你必须阅读它,例如scanf。和int *的选角,你为什么这样做?你不想要一个pixel结构的“数组”吗? -
你为什么要传递
stdin?而且,编译器正在做你告诉它做的事情,而不是你期望它做的事情。 -
您希望
stdin在这种情况下能给您带来什么?它是一个FILE,代表键盘(或终端、控制台或任何你称之为的东西)。我猜你想知道“输入”有多大,但如果是这样的话,你实际上必须先阅读它...... -
你认为这应该是什么意思:
buffer = (int *) malloc (sizeof(pixel) * stdin );??? -
为了获得文件的长度,有十亿条关于它的帖子。这是一个:stackoverflow.com/questions/238603/…