从fwrite参数获取数据数组的内容 - 用objective-c打印出数据

时间:2014-04-21 18:47:15

标签: objective-c c arrays

我有一些代码可以读取:

int SaveTemplateToFile(char* Name, FTR_DATA Template )
{
    //NSLog(@"trying to save template to file");

    FILE *fp;
    fp = fopen( Name, "w+b");
    if( fp == NULL ) return FALSE;

    int Result = fwrite( Template.pData, 1, Template.dwSize, fp ) == Template.dwSize ? TRUE : FALSE;
    fclose(fp);

    return Result;
}

据我所知,这会将从Template.pData检索到的数据写入名为Name变量中存储的文件中。 这就是.tmpl内容的内容:

contents of template file

任务/问题:

我只是想将这些数据存储到一个变量中,这样我就可以将这些数据发送到我的web服务器数据库并将其存储在一个blob文件中,以便以后检索。这也将允许我摆脱{I}我不需要的功能,因为我将所有内容存储到sebserver而不是在本地存储它。

我目前在查找此数据时遇到问题。我在尝试输出这个数据数组时遇到了崩溃,我还提出了数据类型结构的样子:

enter image description here

fwrite属于DGTVOID

如何正确阅读模板的内容?我在想,如果我理解它是什么数据类型,那么我将能够正确地检索数据。

更新1

感谢Paulw11,我可以使用typedef void DGTVOID代替最初导致崩溃的%s来访问极小部分数据。以下是现在正在印刷的内容,一些时髦的颠倒问号:

enter image description here

有没有办法从%@输出此数据流的内容,而不必先将数据作为文件保存到方向上?

1 个答案:

答案 0 :(得分:1)

我认为您应该做的第一件事是将缓冲区转换为NSData实例 -

NSData template = [NSData dataWithBytes:Template.pData length:Template.dwSize];

一旦你有了,那么你可以通过网络请求对数据进行Base64编码以便传输 -

NSString *templateStr = [template base64EncodedStringWithOptions:0];

如果您定位的是早于iOS7的版本,则可以使用弃用的方法

NSString *templateStr = [template base64Encoding];