这个输出没看懂,请帮忙
这个输出没有看懂,请帮忙。我对输出%s! c is cool!能够理解,但是我对下面一行! c is cool!不能理解,请大家
这个输出没有看懂,请帮忙。
我对输出%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");