【发布时间】:2017-11-27 01:38:50
【问题描述】:
我正在使用 UDP 协议传输文件的项目,但是当我使用 strcpy() 将缓冲区复制到另一个字符串时,它总是丢失一些字符。
简单的想法是: 我定义了一个结构:
struct frame{
int kind;//transmission(0) or retransmission(1)
int seq;
int ack;
char info[256];
};
然后我使用 fread 将文本文件的内容放入缓冲区:
char buffer[256] = {0};
fread(buffer, 256, 1, fp);//read file: 256 byte
struct frame currFrame;
currFrame.ack = 0;
bzero(currFrame.info, 256);
strcpy(currFrame.info, buffer); //store the content to transfer
printf("%s\n", buffer);
printf("%s\n", currFrame.info);
上面的代码在一个 for 循环中,因为我多次读取文件。
当我使用 printf() 时,一半时间,结果是正确的。但是一半时间,它们是不同的(比如在头部缺少一些字符)。我该如何解决这个问题?
附加输出(上面是缓冲区,没错):
【问题讨论】:
-
buffer不是以空值结尾的。