2

我必须更正一个现有的 C 文件,它有一堆格式说明符编译错误。谁能说出以下情况的正确格式说明符:

  1. u_char(*) [10](我试过 %s,但没有用)

  2. char(*) [10](我尝试了 %s 和 %c,但没有成功)

谢谢。

4

2 回答 2

4

两者都是指向数组的指针,因此您可以取消引用它们以成为数组,从而衰减为指向第一个元素的指针:

char arr[10];

char (*pa)[10] = &arr;
printf("%s", *pa);   // or &((*pa)[0])

把它拼出来:is 的类型,ispachar(*)[10]类型,后者衰减为 a的值(等于)。*pachar[10]char*&((*pa)[0])&(arr[0])

于 2012-03-24T19:52:22.890 回答
0

我同意Kerrek,但我认为

printf ("%s", *pa);

可能无法按原样工作,因为我们不确定最后是否有 NULL 字符。所以要打印,我们可以执行以下操作

char temp[10+1];
memcpy(temp, *pa, 10);
temp[10] = '\0';
printf("%s",temp);
于 2012-03-24T20:16:56.420 回答