诚城的成长 诚城的成长
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)

诚城

我有N个梦想……
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)
  • C语言简介
  • 环境与工具安装
  • 输出与输入
    • 输出
      • printf
      • putchar
      • puts
    • 输入
      • scanf
      • getchar
      • gets
  • 数据类型
  • 运算

  • 条件判断与循环
  • 内存
  • 转义字符
  • 其他
  • C程序实例
  • C语言
诚城
2021-12-26
目录

输出与输入原创

本内容仅为个人对所学知识理解而作,如有不当之处,请指出,以便帮助我完善相关知识体系

需要引入头文件

// 标准输入输出库,使用<>时编译系统将在指定目录下搜索指定文件
#include <stdio.h> 
// 使用“”时首先在当前目录下搜索,若未找到相应文件,则到指定目录下搜索指定文件
// #include "stdio.h" 

# 输出

# printf

调用的是stdout库。

格式为: printf(格式控制串,输出表列);

  • 格式控制串格式为:%[-][m][.][n][l]格式符,其中格式符有:d、f、s、c、u等。

    点击查看

    格式符说明:

    %u 以十进制无符号形式输出整型数
    %d 以十进制有符号形式输出整型数
    %o 以八进制无符号形式输出整型数
    %x 以十六进制无符号形式输出整型数
    %f 以小数形式输出单、双精度实数型,默认小数保留6位
    %e 以指数形式输出单、双精度实数型,默认小数保留6位,占13列宽,如10.6显示为1.060000e+001
    %c 以字符形式输出一个字符,占一个字节。在ASCII码范围内与整数通用。
    %s 以字符形式输出一个字符串
    
    • -表示显示时,向左对齐。默认向右对齐。
    • m表示输出数据占m个字符位,若实际数据的宽度大于m,按实际输出;若实际数据的宽度小于m,数据右对齐,左边会使用空格来填充。
    • n表示数据有n位小数,f默认有6位小数。
    • l用于常整型或双精度型数据。
    • 特使使用,如%%,则答应符号%.
  • 输出列表可是:常量、变量、表达式,使用逗号隔开。

// 打印整数
prinft("打印常量整数:%d",12);
// 打印字符串
prinft("%s","打印常量字符串");
int d = 23;//定义整型变量d,并赋值
prinft("变量d的值为:%d",&d);
// 打印多个内容
prinft("%d%s",&d,"sdasd");
// 小数打印与小数点控制
float x=1.23456;  
float y=123456.789123;
// 显示为 1.23 [右对齐,必须占6个位置(包含小数点位置),不足的有空格补齐,2位小数
printf(“%6.2f”,x); 
// 显示为123456.78 [超出6位,小数点前内容全部显示+2位小数点  
printf(“%6.2f”,y);   
// 显示为1.235 [右对齐,占5位个位置(包含小数点位置)小数点前内容全部显示+3位小数点
printf(“%.3f”,x);   
print(“%4s”,“Yes”)  显示为 Yes [4位字符串

# putchar

putchar(xx); // 直接打印一个字符
putchar不会换行输出,对应getchar

#include <stdio.h>

int main() {
    char c; //未定义长度是
    printf("请输入字符:");
    fflush(stdout);//多个打印时,必须清除输出缓存区
    c = getchar();// 第二个参数最大为9,64位8字节,实际长度+1
    putchar(c);
    return 0;
}

# puts

put(变量名); // 打印一行字符串,变量名只能为char数组!
//等价于 printf("%s\n",变量名);

puts会换行输出

char c='2';
char a[3]="";
a[0] = 'c';
a[1] = 'b';
a[2] = 'a';
printf("printf的输出:%s\n",a);
puts(a);
puts(&c);
puts("a");
puts("asdsd");

对应gets().

# 输入

其实调用的是stdin库。

# scanf

格式为:scanf(格式控制串,地址表列);

  • 格式控制串格式为:%[m][l][L][h][格式控制符],格式控制符与输出大同小异。
scanf("%d",12);

字符与其他类型同时混合输入时,想要获取单独的“%c”需要在scanf中“%c”前面加空格,否则会出现获取出错。如:

  scanf(“%d %c%f”,&d,&c,&f);

往数组里输入数据,需要使用&对数组元素取地址:

scanf(“%d”,&arr[i]);

# clion 警告

  • Clang-Tidy: 'scanf' used to convert a string to an integer value, but function will not report conversion errors; consider using 'strtol' instead

需要取消file->settings->editor->inspections->static Analysis Tools->Clang-Tidy。

# 循环输入

使用while判断条件结束条件为EOF

需要特别注意的是,要想输入一行就打印一行,使用sacnf等获取输入函数前记得使用用fflush(stdout);清除输出缓冲区。win系统还可以使用rewind()同fflush()。
fflush(stdin)作用:清理标准输入流,把多余的未被保存的数据丢掉。成功返回0,失败返回EOF;
fflush(stdout):清空输出缓冲区,并把缓冲区内容输出。成功返回0,失败返回EOF;

#include <stdio.h>

int main() {
    int i,j=1;
    // fflush(stdout) 和 rewind(stdout) 都是清空缓冲区, rewind 只能用于 win 系统
    // fflush(stdout):清空输出缓冲区,并把缓冲区内容输出。      成功返回0,失败返回EOF
    // fflush(stdin):清理标准输入流,把多余的未被保存的数据丢掉。 成功返回0,失败返回EOF
    while (fflush(stdin),scanf("%d", &i) !=EOF) { // EOF 值为 -1
//    while (rewind(stdout),scanf("%d", &i) !=EOF) { // EOF 值为 -1
        printf("输入的第%d个数为:%d\n", j,i);
        j++;
    };
    printf("循环输入结束!\n");
    return 0;
}

# 混合输入

混合类型输入时,%c前一定要有空格,否则读取不出来!同时为了更好区分数据,数据间最好用空格隔开

#include <stdio.h>

int main() {
    int i;
    float j;
    char c;
    printf("各数据请使用空格隔开:\n");
    fflush(stdout); //清空输出缓冲区,并把缓冲区内容输出。
    scanf("%d%f %c",&i,&j,&c); // %c前一定要有空格,否则读取不出来
    printf("混合输入结果如下:\n");
    printf("    int数值为:%d\n",i);
    printf("    float为:%f\n",j);
    printf("    char内容为:%c\n",c);
    return 0;
}

# getchar

获取输入一个字符,会将字符放到输入缓冲区,包含\n。可以再次使用getchar()清除缓冲区内容。

#include <stdio.h>

int main() {
    char c; //未定义长度是
    printf("请输入字符:");
    fflush(stdout);//多个打印时,必须清除输出缓存区
    c = getchar();// 第二个参数最大为9,64位8字节,实际长度+1
    putchar(c);
    return 0;
}

# gets

从stdin流中获取一行,用于当输入的一行字符串中包含有空格时。只能用于char型。配合 puts 使用。

64位系统,最多8个字符
32位系统,为试

char c; // 未限制长度
gets(&c);
puts(&c);
char d[20]; // 限制字符数组长度20,实际输入长度只能为19
gets(d);
puts(d);
return 0;

可与之对应的是puts()。若是无法使用gets,请尝试使用fgets(指针变量,指针指向的空间大小+1,stdin);如:

#include <stdio.h>

int main() {
    char c; //未定义长度是
    fgets(&c,9,stdin);// 第二个参数最大为9,64位8字节,实际长度+1
    puts(&c);
    return 0;
}

提示

fgets()会将\n放到字符数组中,而gets不会。
尽量优先使用gets。

#include <stdio.h>

int main() {
    char d[20]; 
    // 第二个参数限定输出长度,最多只能比数组长度+1
    fgets(d,21,stdin);
    puts(d);
    return 0;
}

#考研#820#C语言
上次更新: 2022/08/20, 00:50:36
环境与工具安装
数据类型

← 环境与工具安装 数据类型→

Theme by Vdoing | Copyright © 2022-2022 carveybunt | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
×

特别申明:

本站所有内容均为个人理解或转载,如有不当之处,敬请大佬指导!