【发布时间】:2019-06-01 10:09:27
【问题描述】:
需要解释作者在这里试图做什么。 为什么我不能使用一维数组而不是二维数组?
char writemessages[2][20]={"Hi", "Hello"};
char readmessage[20];
程序sn-p:
int main() {
int pipefds[2];
int returnstatus;
char writemessages[2][20]={"Hi", "Hello"}; //why can't i use singlr char array
char readmessage[20];
returnstatus = pipe(pipefds);
if (returnstatus == -1) {
printf("Unable to create pipe\n");
return 1;
}
printf("Writing to pipe - Message 1 is %s\n", writemessages[0]);
write(pipefds[1], writemessages[0], sizeof(writemessages[0]));
read(pipefds[0], readmessage, sizeof(readmessage));
printf("Reading from pipe – Message 1 is %s\n", readmessage);
printf("Writing to pipe - Message 2 is %s\n", writemessages[0]);
write(pipefds[1], writemessages[1], sizeof(writemessages[0]));
read(pipefds[0], readmessage, sizeof(readmessage));
printf("Reading from pipe – Message 2 is %s\n", readmessage);
return 0;
}
【问题讨论】:
-
可能是因为他们想分别发送两条消息?不看整个代码就很难说...
-
有一个问题:“你”发送
writemessages[0]和writemessages[1]但始终指定sizeof(writemessages[0])。 -
@A如果没有问题,
sizeof(writemessages[0])和sizeof(writemessages[1])都等于20,你可能会混淆sizeof和strlen -
@bruno:没错!虽然从“审阅者”的角度来看,它看起来像一个错误。