1.printf()2.scanf()

简介: 1.printf()2.scanf()

1.printf()


2.scanf()


1.printf()


printf函数也是有返回值的。


Return Value


Each of these functions returns the number of characters printed, or a negative value if an error occurs.


返回所打印字符的数,如果错误返回负值.


来个小题目:


KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出printf(“Hello world!”)的返回值吗?


读者可以自行做一下:

看作者的表演:

#include <stdio.h>
int main()
{
  printf("\n%d", printf("Hello world!"));
  return 0;
}

小伙伴们,你们作对了吗?

2.scanf()

scanf()库函数为读入函数,从键盘上读入,读入时先储存到一个名为缓冲区的储存区域,遇到'\n'(即键盘上的Enter回车键)停止读入,下面就开始sacnf从缓冲区进行数据的读取,在遇到空格和非打印字符时停止读入,剩下的数据仍在缓冲区中储存着,等待着下一次的读取。


看下面这个题目:


描述

输入一个学生各5科成绩,输出该学生各5科成绩及总分。


输入描述:

一行,输入该学生各5科成绩(浮点数表示,范围0.0~100.0),用空格分隔。


输出描述:

一行,按照输入顺序每行输出一个学生的5科成绩及总分(小数点保留1位),用空格分隔。先看傻傻

一行,按照输入顺序每行输出一个学生的5科成绩及总分(小数点保留1位),用空格分隔。先看傻傻是我是怎么用数组做的:

看下面的代码:

#include <stdio.h>
int main()
{
  float cj[5];
  float sum = 0;
  int n;
  for (n = 0; n < 5; n++)
  {
    scanf("%f", &cj[n]);
    sum += cj[n];
  }
  for (n = 0; n < 5; n++)
  {
    printf("%.1f ", cj[n]);
  }
  printf("%.1f", sum);
  return 0;
}

用我们c语言老师说的话讲:就这你居然用数组做,直接0分。

其实是没有必要的:

#include <stdio.h>
int main()
{
  float cj;
  float sum = 0;
  int n;
  for (n = 0; n < 5; n++)
  {
    scanf("%f", &cj);
    sum += cj;
    printf("%.1f ", cj);
  }
  printf("%.1f", sum);
  return 0;
}

那我为什么还这样做呢?那就是没有明白scanf()函数的用法,一直是想着它只能读入一个。


其次scanf库函数是有返回值的:


下面是我在MSDN上截取的片段:


Return Value


Both scanf and wscanf return the number of fields successfully converted and assigned; the return value does not include fields that were read but not assigned. A return value of 0 indicates that no fields were assigned. The return value is EOF for an error or if the end-of-file character or the end-of-string character is encountered in the first attempt to read a character.


大概是什么意思呢?scanf返回成功读取的项数。如果没有读取任何项,且需要用户读取一个数字而却输入一个非数值字符,则返回0。遇到文件结尾时,返回EOF。


EOF的值是多少呢?我们转到定义:发现是-1

相关文章
|
3天前
|
云安全 人工智能 自然语言处理
|
7天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
709 17
|
10天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
747 57
Meta SAM3开源:让图像分割,听懂你的话
|
8天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
329 116
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
AgentEvolver:让智能体系统学会「自我进化」
AgentEvolver 是一个自进化智能体系统,通过自我任务生成、经验导航与反思归因三大机制,推动AI从“被动执行”迈向“主动学习”。它显著提升强化学习效率,在更少参数下实现更强性能,助力智能体持续自我迭代。开源地址:https://github.com/modelscope/AgentEvolver
494 37
|
23天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
2天前
|
Rust 安全
掌握Rust文件读取(从零开始的IO操作指南)
本教程手把手教你用Rust读取文件,涵盖`read_to_string`一次性读取和`BufReader`逐行高效读取,适合初学者掌握安全、高效的Rust文件操作,助你轻松入门系统编程。
149 113