读书人

这个输出没看懂请帮忙

发布时间: 2013-12-02 12:00:40 作者: rapoo

这个输出没有看懂,请帮忙。


我对输出%s! c is cool!能够理解,但是我对下面一行! c is cool!不能理解,请大家帮我解惑。
[解决办法]
其实你还真没理解为什么会输出前面那句有%s,不然就不会这么问了。
printf后面的参数会按前面的格式替换掉相应的内容,所以printf实际上转换成了这种形式:
printf("%s! c is cool!\n! c is cool!\n");

[解决办法]
本帖最后由 max_min_ 于 2013-12-01 11:13:34 编辑

#define FORMAT "%s! c is cool!\n"

//帮你换一下,这样应该看懂了吧!后面的那个a变量,你只不过没有有变量名,而用了它本身名来当地址传
char a[] = "%s! c is cool!\n";
printf("%s! c is cool!\n", a);

[解决办法]
第二个字符串替换了第一个字符串中的%s
也就是说输出来的第一行实际上是第二个字符串,第二行才是第一个字符串
[解决办法]
格式化输入输出的格式串参数中的格式,就是一个占位符号。

输出时,会被实参,按照格式输出的数据,替换掉。
---实参转换成对应格式的字符串,替换掉对应的格式符号----

这里 “%s”就是一个格式符号。
实参是"%s! c is cool!\n"

替换以后输出 %s! c is cool!\n! c is cool!\n

其中\n是转义字符,会产生换行,实参的%s会原样输出。

printf("%s! c is cool!\n","%s! c is cool!\n");
相当于
puts("%s! c is cool!\n! c is cool!\n");

读书人网 >C语言

热点推荐