为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不能用puts代替printf

#include <stdio.h>       /*这里的好像缺少头文件哦!*/
int main()                /*这里没有主函数名称的*/
{
      puts/*用这个代替printf不行吗*/("I love imooc!");    /*看一下这里的打印语句是否正确*/ 
    return 0;
}

正在回答

1 回答

两者的区别在于puts的功能更单一,只能输出字符串,而printf可以根据给定的格式输出多种类型的数据。


  1、puts()函数用来向标准输出设备(屏幕)写字符串并换行,其调用方式为,puts(s);其中s为字符串字符(字符串数组名或字符串指针)。

1

2

3

4

5

6

7

   

#include <stdio.h>

int main()

{

    char string[] = "This is an example output string\n";

    puts(string);

    return 0;

}

   


  2、printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。

  printf()函数的调用格式为: printf("<格式化字符串>", <参量表>)。

  格式输出,它是c语言中产生格式化输出的函数(在 stdio.h 中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。要输出的的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

  示例:通过printf函数输出字符串、有符号整数、单精度浮点数、双精度浮点数。

1

2

3

4

5

6

   

#include<stdio.h>

int main()

{

printf("%s\t%d%\t%f\t%e\n", "hello world", 1, 1.1f , 1.1);   

return 0;

}

   

  3、printf控制字符的格式:

  ① d格式:用来输出十进制整数。有以下几种用法:


  %d:按整型数据十进制的实际长度输出。

  %md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

  %ld:输出长整型数据。


  ② o格式:以无符号八进制形式输出整数。


  %d:按整型数据八进制的实际长度输出。

  %lo:对长整型可以用格式输出

  %mo:指定字段宽度用格式输出


  ③ x格式:以无符号十六进制形式输出整数。


  %x:按整型数据十六进制的实际长度输出。

  %lx:对长整型可以用格式输出

  %mx:指定字段宽度用格式输出


  ④ u格式:以无符号十进制形式输出整数。


  %u:按无符号整型数据十进制的实际长度输出。

  %lu:对长整型可以用格式输出

  %mu:指定字段宽度用格式输出


  ⑤ c格式:输出一个字符。


  ⑥ s格式:用来输出一个串。有几中用法


  %s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。

  %ms:输出的字符串占m列,如字符串长度大于m,将字符串全部输出。若串长小于m,则左补空格。

  %-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。

  %m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

  %-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。


  ⑦ f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:

  %f:不指定宽度,整数部分全部输出并输出6位小数。

  %m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。

  %-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。


  ⑧ e格式:以指数形式输出实数。可用以下形式:

  %e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。

  %m.ne和%-m.ne:m、n和”-”字符含义与前相同。

  此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。


  ⑨ p格式:输出指针地址

https://www.zhihu.com/question/35991560

1 回复 有任何疑惑可以回复我~
#1

慕尼黑6557607 提问者

非常感谢!
2017-12-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不能用puts代替printf

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信