我必须更正一个现有的 C 文件,它有一堆格式说明符编译错误。谁能说出以下情况的正确格式说明符:
u_char(*) [10]
(我试过 %s,但没有用)char(*) [10]
(我尝试了 %s 和 %c,但没有成功)
谢谢。
我必须更正一个现有的 C 文件,它有一堆格式说明符编译错误。谁能说出以下情况的正确格式说明符:
u_char(*) [10]
(我试过 %s,但没有用)
char(*) [10]
(我尝试了 %s 和 %c,但没有成功)
谢谢。
两者都是指向数组的指针,因此您可以取消引用它们以成为数组,从而衰减为指向第一个元素的指针:
char arr[10];
char (*pa)[10] = &arr;
printf("%s", *pa); // or &((*pa)[0])
把它拼出来:is 的类型,ispa
的char(*)[10]
类型,后者衰减为 a的值(等于)。*pa
char[10]
char*
&((*pa)[0])
&(arr[0])
我同意Kerrek,但我认为
printf ("%s", *pa);
可能无法按原样工作,因为我们不确定最后是否有 NULL 字符。所以要打印,我们可以执行以下操作
char temp[10+1];
memcpy(temp, *pa, 10);
temp[10] = '\0';
printf("%s",temp);