0

我在 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

有时消息来了,有时它是空白的。谁能指出错误是什么。

4

0 回答 0