错误:在命名管道中使用数组类型分配给表达式

时间:2017-10-21 09:41:47

标签: c arrays

显然,当我尝试编译客户端时,我遇到了这个错误。客户端应逐行读取文本文件并将变量发送到服务器端。代码如下:

 #define FIFONAME "my fifo"

int main (int argc, char *argv[]){

int fd;
char buffer[1024];
char const* const filename = argv[1] ;
FILE* file = fopen(filename,"r");
int i,j;
char array[128][128];
   char line [128];

/*Open the FIFO for writing. It was created by the server.
*/
if ((fd = open (FIFONAME, O_WRONLY)) < 0) {
    perror ("client : open");
    exit (1); }

for(i=0; i=128;i++)
for(j=0; j=128;j++)
arra[j]= '\0';

for (i=0; i<128; i++)
line = '\0';

if (file !=NULL)
{
    i=0;
    while (fgets(line,sizeof line, file) != NULL) 
    strcpy(arra, line);
    printf ("%s",&arra);
    i++;

}


while ((file = read(0, buffer, sizeof(buffer))) >0) {
write(fd, buffer, file);
}

fclose(file);
//close (fd);
return (0);
}

无论如何,这个错误可以解决吗?

1 个答案:

答案 0 :(得分:0)

下面

dispatchTouchEvent()

char line [128]; 被定义为128 line的数组。

下面

char

代码尝试128次,将字符文字“\ 0”分配给整个数组。这根本不符合逻辑。

可能想要的是将for (i=0; i<128; i++) line = '\0'; 的所有128个元素设置为line。所以这一步一步一步:

'\0'