C语言里面这个puts和printf看不懂啊

为啥用printf打印结果的时候I like c循环两遍,he hate c只循环一遍呢?而且19个字符的话为什么空格不算在内呢?求详解。

puts是输出字符串,遇到字符串中的0值时结束,并且输出回车

printf也是输出字符串,但没有自动加换行的功能,因此你看到两行前面到大写C都输出一致

而用循环逐一输出字符数组内容,遇到0也不会自动结束,由于0字符无法显示输出空字符,不占输出位置,从头输出时,前面的内容与puts是一致的,因此你看到又重复输出了到大写C的内容,之后才是后续内容,这部分是前面两个语句无法输出的,属于另一截字符串内容了

数组中存放了两个字符串,如果想与循环输出效果相同的内容,可以写:

printf("%s%s",str,str+9); //这里给出了两个字符串起始位置,每个字符串输出遇到0则结束

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-13

\0代表字符数串的结束标志,不是空格!

也就是字符数组的最后一位加上的'\0'

\0的ASCII码为0,也就是空字符

上面的就是从字符数组的开始读取,直到最后字符串结束标志'\0'。

字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时,也把结束符'\0'存入数组,并以此作为该字符串是否结束的标志。

相似回答