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

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

#include
int main()
{
char string[] = "This is an example output string\n";
puts(string);
return 0;
}

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

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

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

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

#include
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格式:输出指针地址