Code Bye

讨教两个C语言问题,多谢大家

第一个,printf里面的内容以前是printf(“board: %c\n”,*(*board+i)); 本人想改成输出地址,可是为什么本人改了输出是这样的

第二个问题,没有%控制符也可以在printf中加  , 然后加变量名称,这是怎么回事?

谢谢各位高手
解决方案

20

第一问题是你就是输出字符串啊
printf(“board: %d\n”,board+i);
这就是输出子数组的地址
没有%控制符也可以在printf中加  , 然后加变量名称,这是怎么回事?
对于这个问题:
其实就是不定参数实现
你可以参考下:
http://blog.sina.com.cn/s/blog_88534dff01010pb5.html

10

输出地址用%p

5

printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
Collapse AllExpand All      Code: All Code: Multiple Code: Visual Basic Code: C# Code: Visual C++ Code: J# Code: JScript
Visual Basic
C#
Visual C++
J#
JScript
Run-Time Library Reference
printf Type Field Characters
See Also  Send Feedback

The type character is the only required format field; it appears after any optional format fields. The type character determines whether the associated argument is interpreted as a character, string, or number. The types C, n, p, and S, and the behavior of c and s with printf functions, are Microsoft extensions and are not ANSI compatible.
Character
Type
Output format

c
int or wint_t
When used with printf functions, specifies a single-byte character; when used with wprintf functions, specifies a wide character.

C
int or wint_t
When used with printf functions, specifies a wide character; when used with wprintf functions, specifies a single-byte character.

d
int
Signed decimal integer.

i
int
Signed decimal integer.

o
int
Unsigned octal integer.

u
int
Unsigned decimal integer.

x
int
Unsigned hexadecimal integer, using “abcdef.”

X
int
Unsigned hexadecimal integer, using “ABCDEF.”

e
double
Signed value having the form [ – ]d.dddd e [sign]dd[d] where d is a single decimal digit, dddd is one or more decimal digits, dd[d] is two or three decimal digits depending on the output format and size of the exponent, and sign is + or –.

E
double
Identical to the e format except that E rather than e introduces the exponent.

f
double
Signed value having the form [ – ]dddd.dddd, where dddd is one or more decimal digits. The number of digits before the decimal point depends on the magnitude of the number, and the number of digits after the decimal point depends on the requested precision.

g
double
Signed value printed in f or e format, whichever is more compact for the given value and precision. The e format is used only when the exponent of the value is less than –4 or greater than or equal to the precision argument. Trailing zeros are truncated, and the decimal point appears only if one or more digits follow it.

G
double
Identical to the g format, except that E, rather than e, introduces the exponent (where appropriate).

a
double
Signed hexadecimal double precision floating point value having the form [−]0xh.hhhh p±dd, where h.hhhh are the hex digits (using lower case letters) of the mantissa, and dd are one or more digits for the exponent. The precision specifies the number of digits after the point.

A
double
Signed hexadecimal double precision floating point value having the form [−]0Xh.hhhh P±dd, where h.hhhh are the hex digits (using capital letters) of the mantissa, and dd are one or more digits for the exponent. The precision specifies the number of digits after the point.

n
Pointer to integer
Number of characters successfully written so far to the stream or buffer; this value is stored in the integer whose address is given as the argument. See Security Note below.

p
Pointer to void
Prints the argument as an address in hexadecimal digits.

s
String
When used with printf functions, specifies a single-byte–character string; when used with wprintf functions, specifies a wide-character string. Characters are printed up to the first null character or until the precision value is reached.

S
String
When used with printf functions, specifies a wide-character string; when used with wprintf functions, specifies a single-byte–character string. Characters are printed up to the first null character or until the precision value is reached.

Note   If the argument corresponding to %s or %S is a null pointer, “(null)” will be printed.
Note   In all exponential formats, the default number of digits of exponent to display is three. Using the _set_output_format function, the number of digits displayed may be set to two, expanding to three if demanded by the size of exponent.
Security Note   The %n format is inherently insecure and is disabled by default; if %n is encountered in a format string, the invalid parameter handler is invoked as described in Parameter Validation. To enable %n support, see _set_printf_count_output.
See Also
Concepts
printf, _printf_l, wprintf, _wprintf_l
Send feedback on this topic to Microsoft.


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明讨教两个C语言问题,多谢大家