0

我正在尝试将 unsigned char* 数组写入文件。

到目前为止,我尝试过的代码的一个最小工作示例是(假设 fp 已正确初始化):

unsigned char* x; int i; int j; int sizeOfx;
for (i=0; i<n; i++) {
    x = // getter function with parameter i
    sizeOfx = // getter function that returns the number of elements in x
    for (j=0; j<sizeOfx; j++) {
        fprintf(fp,"%s",x[j]);
    }
}

即我一次通过char 数组一个元素并将其写入文件。

但是,我得到了错误

format ‘%s’ expects argument of type ‘char*’, but argument 3 has type ‘int’ [-Wformat]

我怎样才能解决这个问题?

非常感谢您!

4

2 回答 2

3

%s用于打印字符串,因此您需要更改x[j]x“修复”您的错误。

由于您似乎真的想char单独编写每个内容,因此您需要考虑如何存储“元素”(字符串的字符)。

您可以使用%c将它们的值作为 ASCII 值存储在文件中(使用%sand时基本相同x,除非您想写多于/少于完整的字符串)。

或者您可以将“元素值”存储为整数,即使用字符 0-9 的文本值,使用%d. 或者可能%x是使用字符 0-9 和 af 的十六进制。

因此,由您决定如何存储x.

于 2013-01-23T16:33:03.367 回答
2

尝试 %c(用于字符打印)而不是 %s。

或者,您可以按如下方式编写打印行:

fprintf(fp,"%s",(char*)x[j]);

它将 x[j] 处的指针静态转换回字符串(本质上),然后如果进入该循环的字符串是“abcdef”,那么输出将如下所示:

"abcdefbcdefcdefdefeff"

这是 c 完全开放做你想做的事的地方。

于 2013-01-23T16:29:41.410 回答