假设我有一个文件。我将所有字节读入一个无符号字符缓冲区。从那里我试图在不知道它的长度的情况下读取 ac 字符串(以空结尾)。
我尝试了以下方法:
char* Stream::ReadCString()
{
char str[0x10000];
int len = 0;
char* pos = (char*)(this->buffer[this->position]);
while(*pos != 0)
str[len++] = *pos++;
this->position += len+ 1;
return str;
}
我以为我可以在遍历时填充 str 数组中的每个字符,检查字符是否为空终止。这是行不通的。有什么帮助吗?
this->buffer = 字节数组
this->position = 在数组中的位置
有没有其他方法可以做到这一点?我想我可以通过实际缓冲区的地址运行它:
str[len++] = *(char*)(this->buffer[this->position++])
?
更新: 我的新功能:
char* Stream::ReadCString()
{
this->AdvPosition(strlen((char*)&(this->buffer[this->position])) + 1);
return (char*)&(this->buffer[this->position]);
}
并调用它:
printf( "String: %s\n", s.ReadCString()); //tried casting to char* as well just outputs blank string
示例文件: