C语言输出
puts();:只能输出字符串,在结束后自动换行。
putchar();:输出单个字符。
printf();:可是通过格式控制符输出各种类型的数据,是最灵活、最复杂、最常用的输出函数。

  • 主要讲printf()格式控制符
    printf() 格式控制符的完整形式如下:
    %[flag][width][.precision]type([ ] 表示此处的内容可有可无,是可以省略的。)

1>type表示输出类型。
2>flag是标志字符。

符号 作用
"- " 表示左对齐,默认右对齐
“+” 用于整数或者小数,表示输出符号(正负号)
" " 用于整数或者小数,输出值为正时冠以空格,为负时冠以负号。
“#” 对于八进制和十六进制,表示在输出前添加前缀。对于小数,强迫输出小数点。
“0” 用前导0来代替空格填充字段宽度

3>width表示输出宽度。当输出的结果不足width,以空格补齐。否则,width无作用。
4>.precision 表示输出精度,也就是小数的位数。 原输出数据不足设置精度,四舍五入舍弃剩余位。否则,在其后补0.

  • ”修饰符(修改转换说明的含义)
    在printf()格式控制符中用法:不想预先指定字段宽度,希望程序运行中指定,就可以用“
    ”修饰符代替字段宽度,但还是要用一个参数来告诉函数,字段宽度是多少。
    ex:printf("%*d",&width,&number);

  • printf返回值
    返回打印字符的个数(包括不见的空格和换行符)。printf()的返回值是其打印输出功能的附带用途,平时很少用到。

  • printf使用注意事项
    不能在双引号括起来的中间断行。解决办法:
    1.在断行前加一个“\”就会避免出错。
    2.在两个用双引号括起来的字符串之间用空白隔开,c编译器会自动将其视为一个字符串。

  • printf转换说明
    C语言复习——输入输出

C语言输入

  • gets():能读取含有空格的字符串,scanf不能。
  • getchar():相当于scanf("%c",m);,除了更加简洁,没有别的优势。
  • getche():它没有缓冲区,输入一个字符后会立即读取,不用等待用户按下回车键,这是它和 scanf()getchar() 的最大区别。
  • getch():getch() 也没有缓冲区,输入一个字符后会立即读取,不用按下回车键,它没有回显,看不到输入的字符。
  • scanf()(scan format格式化扫描)
    可以输入多种类型的数据,是最灵活的输入函数。

scanf() 可以一次性读取多份类型相同或者不同的数据,getchar()、getche()、getch() 和 gets() 每次只能读取一份特定类型的数据,不能一次性读取多份数据。

主要写scanf的知识点

  • scanf() 控制字符串的完整写法为:

    %{*} {width} type

其中,{ } 表示可有可无。各个部分的具体含义是:
type表示读取什么类型的数据,例如 %d、%s、%[a-z]、%[^\n] 等;type 必须有。
width表示最大读取宽度,可有可无。
*表示丢弃读取到的数据,可有可无。

  1. scanf高级用法
    1>指定读取长度
    在格式控制符的中间加一个数字,用来表示读取数据的最大长度。
    作用:限制读取数据的长度在实际开发中非常有用,最典型的一个例子就是读取字符串:我们为字符串分配的内存是有限的,用户输入的字符串过长就存放不了了, 就会冲刷掉其它的数据,从而导致程序出错甚至崩溃;如果被黑客发现了这个漏洞,就可以构造栈溢出攻击,改变程序的执行流程,甚至执行自己的恶意代码,这对服务器来说简直是灭顶之灾。

    2>匹配特定的字符(可以使用连接符)

  • %s 控制符会匹配除空白符以外的所有字符,它有两个缺点:
    a.%s 不能读取特定的字符,比如只想读取小写字母,或者十进制数字等,%s 就无能为力;
    b.%s 读取到的字符串中不能包含空白符

  • %[xxx],[ ]包围起来的是需要读取的字符集合。

    ex:scanf("%[abcd]",&c);
    %[abcd]表示只读取字符abcd,遇到其它的字符就读取结束
    使用连接符:为了简化字符集合的写法,scanf() 支持使用连字符-来表示一个范围内的字符,例如 %[a-z]、%[0-9] 等。

  • 不匹配特定字符(可以使用连接符)
    %[ ]中直接指定某些不能匹配的字符,具体方法就是在不匹配的字符前面加上^
    ex:%[^0-9]
    表示匹配除十进制数字以外的所有字符,遇到十进制数字就停止读取。

  • 丢弃读取到的字符
    每个格式控制符都要对应一个变量,把读取到的数据放入对应的变量中。其实你也可以不这样做,
    scanf() 允许把读取到的数据直接丢弃,不往变量中存放,具体方法就是在 % 后面加一个*
    ex:%*[a-z]
    表示读取小写字母并丢弃

高级用法示例:
读取一行不能包含十进制数字的字符串,并且长度不能超过30
ex:scanf("%30[^0-9\n]", str);

  1. scanf的返回值
    返回值为成功读取的项数。
    主要用法:利用返回值,用if语句和while语句,检测和处理不匹配的输入。
  2. “*”修饰符(修改转换说明的含义)
    把“*”放在%和转换字符之间,会使得scanf跳过相应的输入项,,也就是此次输出无效,将这次输入的值赋给下一个变量。
  3. scanf转换说明
    C语言复习——输入输出

相关文章:

  • 2022-02-25
  • 2021-10-18
  • 2021-09-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-28
  • 2021-12-23
  • 2021-10-15
  • 2022-12-23
  • 2021-11-25
  • 2021-05-23
相关资源
相似解决方案