共享内存中的字符串变为空白

时间:2018-01-24 16:16:49

标签: c string shared-memory arrayofstring

我在struct中创建了一个字符串数组,它是共享的。

结构如下:

struct data{
    int uids[5];
    int sockids[5];
    int stat[30];
    char msgs[30][1024];
};

这是写作部分,我可以看到printf上的字符串。

for (int i = 0; i < bufSize; i++) {
    if ((*d).stat[i] == -1) {
        (*d).stat[i] = sockid;
        memset(&((*d).msgs[i][0]), 0, strlen(d->msgs[i]));
        strncpy((*d).msgs[i], buf,1023);
        printf("\nwriting for me %d %s\n",sockid,d->msgs[i]);
        return 1;
    }
}

从同一地区阅读:

for(int i=0;i<bufSize;i++){
    if((*d).stat[i]==mysocket){
        (*d).stat[i]=-1;
        printf(" message for me %d  %d %s\n",mysocket,d->stat[i],d->msgs[i]);
        fflush(stdout);
        send(mysocket,(*d).msgs[i],strlen((*d).msgs[i]),0);
        memset(&((*d).msgs[i][0]), 0, strlen(d->msgs[i]));
    }
}

在阅读部分我有时会空白......

示例输出..:

写给我6 36753:发送一些信息

给我留言6 -1

有时消息会出现,有时候会出现空白。 任何人都可以指出错误是什么。

0 个答案:

没有答案