zl程序教程

您现在的位置是:首页 >  IT要闻

当前栏目

C语言:输入 & 输出

2023-02-18 16:40:17 时间

这是很基础的教程,我只是写给自己看,作为一个学习笔记记录一下,如果正在阅读的你觉得简单,请不要批评,可以关掉选择离开

如何学好一门编程语言

  • 掌握基础知识,为将来进一步学习打下良好的基础。
  • 上机实践,通过大量的例题学习怎么设计算法,培养解题思路。
  • 养成良好的编码习惯,注释一定要写,要不然保你一周后自己写的代码都不认识了

getchar() & putchar() 函数

 int getchar(void) :从屏幕中获取一个字符,返回一个整数(经过强制类型转换),如果到达文件末尾或发生读错误,则返回 EOF。我们也可以在循环内使用这个方法,以便从屏幕上读取多个字符。

 int putchar(int char) 

  • 参数:把参数 char 输出到屏幕中
  • 返回:返回写入的字符(强制转换为int型),如果发生错误则返回 EOF。
#include <stdio.h>

int main () {
   char c;
 
   printf("请输入字符:");
   c = getchar();   // getchar返回的int,但是c是char型,这里被强制转换成了char型
 
   printf("输入的字符:");
   putchar(c);

   return(0);
}
//请输入字符:a
//输入的字符:a

gets() & puts() 函数

char *gets(char *str)

  从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

参数

  • str:这是指向一个字符数组的指针,该数组存储了 C 字符串。

返回

  • 如果成功,该函数返回 str。如果发生错误或者到达文件末尾时还未读取任何字符,则返回 NULL。
int puts(const char *str)

  向标准输出stdout写入字符串,直到空字符,但不包括空字符。换行符会被追加到输出中。

参数

  • str:这是要被写入的 C 字符串。

返回

  • 如果成功,该函数返回一个非负值为字符串长度(包括末尾的 \0),如果发生错误则返回 EOF。
#include <stdio.h>

int main() {
    char str[100];

    printf("输入字符串:");
    gets(str);

    printf("输出:");
    puts(str);
    return 0;
}
//输入字符串:my name never
//输出:my name never

scanf()

int scanf(const char *format, 变量地址)

  从标准输入(stdin)读取格式化输入

参数

  • format:包含一个或多个:空格字符、非空格字符和format说明符

返回:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。


printf() 
#include<stdio.h> int main(void) { int a; char b; char c[20]; printf("请输入一个整数:"); scanf("%d", &a); fflush(stdin); // 清除stdin的缓存 printf("输入的整数为:%d\n", a); printf("请输入一个字符:"); scanf("%c", &b); fflush(stdin); printf("输入的字符为:%c\n", b); printf("请输入一个字符串:"); scanf("%s", c); fflush(stdin); printf("输入的字符串为:%s\n", c); return 0; }
int printf(const char *format, 变量)

参数

  • format:格式化字符串,%[flags][width][.precision][length]specifier,详细的格式化字符串标识符见:链接

%s是字符串,字符串必须以'\0' 结尾。

格式化字符

format说明符格式为: %[flags][width][.precision][length]specifier [ ]内的内容代表可选

  • flags:标识符
  • width:要输出的字符的最小数目,如果输出的值短于该数,结果会用空格填充。如果输出的值长于该数,结果不会被截断。
  • .precision:精度
  • length:长度
  • specifier:格式化字符

标识符


flags

描述
-   给定宽度内左对齐,默认是右对齐
+ 强制在结果之前显示加号或减号(+ 或 -)
空格 该值前面插入一个空格。
#

与 o、x 或 X 说明符一起使用时,非零值前面会分别显示 0、0x 或 0X
与 e、E 和 f 一起使用时,会强制输出包含一个小数点,即使后边没有数字时也会显示小数点。默认情况下,如果后边没有数字时候,不会显示显示小数点。
与 g 或 G 一起使用时,结果与使用 e 或 E 时相同,但是尾部的零不会被移除

0 在指定填充 padding 的数字左边放置零(0),而不是空格(参见 width 子说明符)。

格式化字符

格式字符

specifier 

意义
d 十进制形式输出带符号整数(正数不输出符号)
u 无符号的十进制整数
o 八进制形式输出无符号整数(不输出前缀0),有前缀需要加#号,%#o
x、X

无前缀0x小写大写十六进制整数,有前缀需要加#号,%#x

f 以小数形式输出单、双精度实数
e,E 以指数形式输出单、双精度实数
g,G 以%f或%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
p 输出指针地址
lu 32位无符号整数
llu 64位无符号整数

精度

对于整数说明符(d、i、o、u、x、X):precision 指定了要写入的数字的最小位数。如果写入的值短于该数,结果会用前导零来填充。如果写入的值长于该数,结果不会被截断。精度为 0 意味着不写入任何字符。

对于 e、E 和 f 说明符:要在小数点后输出的小数位数。

对于 g 和 G 说明符:要输出的最大有效位数。

对于 s: 要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符。

对于 c 类型:没有任何影响。

当未指定任何精度时,默认为 1。如果指定时不带有一个显式值,则假定为 0。

长度

length(长度)描述
h 参数被解释为短整型或无符号短整型(仅适用于整数说明符:i、d、o、u、x 和 X)。
l 参数被解释为长整型或无符号长整型,适用于整数说明符(i、d、o、u、x 和 X)及说明符 c(表示一个宽字符)和 s(表示宽字符字符串)。
L 参数被解释为长双精度型(仅适用于浮点数说明符:e、E、f、g 和 G)。

 案例

printf("字符为 %c \n", ch);
printf("字符串为 %s \n" , str);
printf("浮点数为 %f \n", flt);
printf("整数为 %d\n" , no);
printf("双精度值为 %lf \n", dbl);
printf("八进制值为 %o \n", no);
printf("十六进制值为 %x \n", no);

 

参考

菜鸟教程