C语言实战:解锁数据输入与输出的奥秘(一),编程之路从此畅通无阻!

 2026-01-31 11:27:16  3 浏览  0 评论   赞

1.常用输入输出函数

字符输出函数putchar

putchar函数是字符输出函数,其功能是在终端(显示器)输出单个字符。其函数原型为:

int putchar(int ch);

ch表示要输出的字符内容,返回值作用为:如果输出成功返回一个字符的ASC码,失败则返回EOF即-1

#include<stdio.h> int main() { char x = 'B'; putchar('A'); putchar(x); putchar('\n'); putchar('\C'); return 0; } 字符输入函数getchar

getchar函数的功能是接收用户从键盘上输入的一个字符。其一般调用形式为:

getchar();

getchar会以返回值的形式返回接收到的字符.

#include<stdio.h> int main() { char c; c = getchar(); printf("%c", c);//将读取的字符赋值给字符变量c return 0; } 格式化输入函数scanf

scanf函数称为格式输入函数,即按照格式字符串的格式,从键盘上把数据输入到指定的变量之中。Scanf函数的调用的一般形式为:

scanf(“格式控制字符串”,输入项地址列表);

其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表项中的地址给出各变量的地址,地址是由地址运算符”&”后跟变量名组成的。

1.常用输入输出函数_C语言实战:解锁数据输入与输出的奥秘(一),编程之路从此畅通无阻!

图131584-1:

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { float a; scanf("%f", &a); printf("%f", a); return 0; } 输入long类型数据时必须使用%ld,输入double数据必须使用%lf或%le。

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { long a; scanf("%ld", &a); printf("%ld", a); return 0; } #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { double x; scanf("%lf", &x); printf("%lf", x); } 附加格式说明符”*”使对应的输入数据不赋给相应的变量。

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int a; printf("请输入数字:\n"); scanf("%*d %*d %d", &a); printf("%d", a);//999 return 0; } [图1.jpg|]

格式化输出函数printf

printf函数叫做格式输出函数,其功能是按照用户指定的格式,把指定的数据输出到屏幕上.printf函数的格式为:

printf(“格式控制字符串”,输出表项);

[图2.jpg|]

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int a = 12; float b = 3.14156; char c = 'A'; printf("%d\n", a); printf("o%o\n", a);//八进制 printf("0x%X\n", a);//十六进制 printf("%3.4f\n", b);//小数点后4位 printf("%c\n", c); return 0; }

2.d%格式字符

%d按整型数据的实际长度输出。

%[0]md以m指定的字段宽度输出,如果数据的位数小于m,则左端补以空格;若m前面有"0”,则左端补以0。

%md以m指定的字段宽度输出,左对齐。

%ld输出长整型数据

#include<stdio.h> int main() { int x = 123456; printf("%d\n", x); printf("%10d\n", x);//一共10个宽度 printf("%3d\n", x);//因为数字长度大于3,所以没有影响 printf("%010d\n", x);//一共10个宽度,因为第一位是0,所以左边补0 printf("%-10d", x); printf("aaa"); printf("%ld", x);//32位系统,D,LD是一样在,有些系统,D是短整形 return 0; }

3.无符号八进制十进制十六进制格式符

%d : 以十进制形式输出数据

%o : 以八进制形式输出数据

%x : 以十六进制形式输出数据

%u : 以十进制形式输出unsigned型数据

#include<stdio.h> int main() { int x = -1; printf("%p", &x); printf("%d,%u,%o,%x", x,x,x,x); return 0; } [图3.jpg|]

[图4.jpg|]

4.输出不同的类型的整数

short

int main() { short sh1, sh2;//默认是signed ,有符号 sh1 = 19; sh2 = -19; unsigned short ush1; ush1 = 256; //有符号,无符号都是占2个字节 printf("%d,%d\n", sizeof(signed short), sizeof(unsigned short));//2,2, printf("%hd\n", sh1);//%hd 对应有符号 printf("%hd\n", sh2); printf("%hu\n", ush1);//%hu 对应无符号 } #include<stdio.h> #include<limits.h> int main() { //有符号Short最大,最小 //第一位是符号位,0为正,1为负 printf("%hd,%hd\n", SHRT_MAX, SHRT_MIN); //无符号Short最大,最小 //16位全是数据 printf("%d,%d\n", USHRT_MAX, 0);//%hu也是可以 } %hd只能解析SHRT_MAX与SHRT_MIN中的值,越界会出错,%hu同理

#include<stdio.h> #include<limits.h> int main() { printf("%hd,%hd\n", SHRT_MAX+1, SHRT_MIN-1); printf("%hu,%hu\n", USHRT_MAX+1, 0-1); } C语言中规则short<int<long

int

#include<stdio.h> #include<limits.h> int main() { //4个字节,有一个符号位,0为正,1为负 printf("max=%d,min=%d\n", INT_MAX, INT_MIN); //无符号 printf("max=%u,min=%d\n", UINT_MAX, 0); //max=-2147483648,min=2147483647 printf("max=%d,min=%d\n", INT_MAX+1, INT_MIN-1); } long

#include<stdio.h> #include<limits.h> int main() { //4个字节,有一个符号位,0为正,1为负 printf("max=%d,min=%d\n", LONG_MAX, LONG_MIN); //无符号 printf("max=%u,min=%d\n", ULONG_MAX, 0); //max=-2147483648,min=2147483647 printf("max=%d,min=%d\n", LONG_MAX +1, LONG_MIN -1); } #include<stdio.h> #include<limits.h> int main() { //4个字节,有一个符号位,0为正,1为负 printf("max=%d,min=%d\n", LONG_MAX, LONG_MIN); //无符号 printf("max=%u,min=%d\n", ULONG_MAX, 0); //max=-2147483648,min=2147483647 printf("max=%d,min=%d\n", LONG_MAX +1, LONG_MIN -1); } 16位系统:long是4字节,int是2字节

32位系统:long是4字节,int是4字节

64位系统:long是4字节,int是4字节

long long

#include<stdio.h> #include<limits.h> int main() { printf("LLSize=%d\n", sizeof(long long)); //8个字节,有一个符号位,0为正,1为负 //max=9223372036854775807,min=-9223372036854775808 printf("max=%lld,min=%lld\n", LLONG_MAX, LLONG_MIN); //无符号 printf("max=%llu,min=%d\n",ULLONG_MAX,0); //max=-9223372036854775808,min=9223372036854775807 printf("max=%lld,min=%lld\n", LLONG_MAX +1, LLONG_MIN -1); } 编译long long需要支持C99标准的编译器才行

long long 的级别高于 long ,long 的级别高于 int ,int 的级别高于 short ,short 的级别高于 char 。

5.c格式符

输出一个字符,输出数据可以是单个字符或是一个范围在0到255之间的整数

#include<stdio.h> #include<limits.h> int main() { char x = 'a'; int i = 97; //以下都是输出a,97 printf("%c,%d\n", x, x); printf("%c,%d", i, i); } 输出hello

int main() { printf("%c%c%c%c%c\n", 'h', 'e', 'l', 'l', 'o'); printf("%c%c%c%c%c", 104, 101, 108, 108, 111); } 限定宽度

#include<stdio.h> #include<limits.h> int main() { printf("%3c%3c%3c%3c%3c", 'h', 'e', 'l', 'l', 'o'); }

6.s格式符

%s

%ms输出字符串占m列,如果字符串本身长度超过m,则可以超过m列,全数输出;如果字符串小于m,则左补空格。

%-ms输出字符串占m列,如果字符串小于m,则字符串靠左,右左补空格。

%m.ns输出占m列,但只取字符串中的左端n个字符,这n个字符输入输出在m列的右则,左则补空格。

-%m.ns。n个字符输出在m列的左侧,右侧补空格。

int main() { printf("%s\n", "hello world"); printf("%s %s", "hello", "world"); } %s多种宽度

int main() { // hello world printf("%30s\n", "hello world"); //如果给的宽度10小于实际输出字符串宽,直接按实际输出 printf("%10s\n", "hello world"); printf("%-50s\n", "hello world");//左对齐 //输出字符串前n个字符,右对齐,总长度15 printf("%15.5s\n", "hello world");// hello char str[] = "hello world"; printf("\n%s", str); }

7.f格式符

%f 整数部分全部输出,小数部分输出6位

%m.nf 输出数据共点m列,小数占n位,右对齐

%-m.nf 输出数据共m列,小数占n位,左对齐

#include<stdio.h> #include<limits.h> int main() { float f1; f1 = 1.2345f; float f2 = 100; printf("%f,%f\n", f1,f2);//保留小数点后6位 printf("%15f,%2f\n", f1, f2);//如果小于限定宽度,按实际,否则补空格 printf("%-15f,%2f\n", f1, f2);//-右边补空格 printf("%-15.2f,%2.1f\n", f1, f2);//-右边补空格,小数点后2位 printf("%015f\n", f1);//左补0 } %e格式符

输出数据共13位,其中整数部分为1非零数字,小数点占1位,小数部分为6位,指数部分e占1位,指数符号占1位,指数为3位,若输出数据为负数,还应增加一位整数部份的符号位。

int main() { printf("%e", 12.3); //1.230000e+01 } #include<stdio.h> #include<limits.h> int main() { printf("%15e\n", 12.3456);//限定宽度,补空格 //1.230000e+01 double d1 = 10000.1234; printf("%.10e\n", d1);//1.0000123400e+04,小数点后10位 printf("%20e%", d1);//限定20宽度,小于时左边补空格 } %g格式符

根据数值大小,自动选择f格式或e格式输出实数。

%g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的小数记数法,在指数小于-4或者大于等于精度时使用%E格式

#include<stdio.h> #include<limits.h> int main() { float f1 = 1.234; //1.234567,1.234567e+00,1.23457 printf("%f,%e,%g\n", f1, f1, f1); printf("%g\n", 0.00001234); printf("%g\n", 0.0001234); printf("%.2g\n", 123.45); printf("%.2g\n", 23.45); double d1 = 10.0; printf("%g", d1); }

8.printf详细说明

格式字符中,除了X、E、G,C外,其他均用小写字母,如“%d”不能写成“%D”。

不同类型的数据应使用相应类型的格式字符说明其输出形式。

如需输出双引号,应在“格式控制”中表示为转义字符的形式并用单引号引起来,即“\””。

如需输出字符“%”,在“格式控制”中用连续两个“%”即可。如:printf(“%d%%”,s);

当“格式控制”中格式符个数少于输出表中的输出项时,多余的输出项不予输出。

当“格式符”多于输出项时,结果为不定值。

格式化大小写问题

%d带符号的十进制形式输出整数

printf("%d,%D", 20, 20);//20,D %o无符号八进制输出整数

printf("%o,%O", 10, 10);//12,O %x 无符号十六进制输出整数

printf("%x,%X", 14, 14);//e,E u%以十进制形式输出无符号整数

printf("%u,%U", 14, 14);//14,U %c以字符输出

printf("%c,%C", 'D', 'D');//D, D %s 输出字符串

printf("%s,%S", "Hello","Hello");//Hello, %f 以小数点输出

printf("%f,%F", 1.0,2.0);//1.000000,2.000000 这个在VS的C编译器下可以正常输出,在gcc下结果不同

%e 指数输出

printf("%e,%E", 1.0,1.0);//1.000000e+00,1.000000E+00 %g 使用输出宽度较小的格式输出

printf("%g,%G", 1.0, 2.0);//1,2 printf格式一定要匹配

int main() { int x = 1; printf("%d,%f", x,x);//f%输出在0.000000,输出格式一定要匹配 getchar(); } 从左向右开始解析

int main() { int x = 11; printf("%%d", x);//从左向右开始解析,%%解析成%了。 getchar(); } *与格式符

int main() { int x = 10; //数字是限定字符宽度 printf("%d\n", x); printf("%4d\n", x); printf("%8d\n", x); printf("%16d\n", x); } int main() { for (int i = 1; i < 10; i++) { printf("%*d\n", i, i);//*不是替换i的 } } int main() { for (int i = 1; i < 10; i++) { printf("%*.*f\n", 2 * i, i, 1.23);//2*i表示宽度,i是小数点位数 } } %d中间加空格

int main() { printf("%d,%d", 99, -99); printf("\n"); printf("% d,% d", 99, -99);//正数多一个空格,负数没有变化 }

号控制符

int main() { printf("%o,%#o\n", 8, 8);//#在八进制时自动补0 printf("%x,%#x\n", 20, 20);//补0x printf("%x,%#X", 20, 20);//补0X return 0; }

可以确保小数点显示

int main() { printf("%.0f,%f\n", 1.23, 1.23); //补了#号后,小数点会保留 printf("%#.0f,%f\n", 1.23, 1.23);//这里输出会1.,1.230000 printf("%#.0e,%e\n", 1.23, 1.23);//1.e+00,1.230000e+00 printf("%#.0g,%g\n", 1.23, 1.23);//1.,1.23 return 0; } %a是以指数形式输出一个浮点数

1.%a浮点数,十六进制数字和p-记数法(C99)%A浮点数,十六进制数字和p-记法(C99)。

int main() { //0x1p+4,0x1.4e3d70a3d70a4p+41p+4->24次方 printf("%.0a,%a\n", 20.89, 20.89); printf("%.0a,%a\n", 1.23, 1.23); printf("%.0a,%a\n", 4.23, 4.23); return 0; } printf类型匹配

int main() { int age = 9; float weight = 69.9; //今年9岁,体重69.900002公斤! printf("今年%d岁,体重%f公斤!\n",age, weight); //如果写反,今年-1610612736岁,体重0.000000公斤! printf("今年%d岁,体重%f公斤!\n", weight, age); //这里可以确定提是%d是按整数截取解析,%f按小数 printf("%p,%p", &age, &weight);//这里在内存中查看显示结果不同 getchar(); } int main() { printf("%d,%f", 10.1, 10.8);//在x64下,第一个匹配出错,第二个正确,x86下只要一个匹配出错,都出错 } 注意:x86与x64下有区别

int main() { printf("%d\n", INT_MAX); printf("%d\n", INT_MAX+1); return 0; } 这个是越界出不正确值

输出+数,在% 后输入一个+号

int main() { printf("%d,%d\n", 10, -20); printf("%+d,%+d\n", 10, -20); return 0; } int main() { printf("%.2f,%.2f\n", 1.23, -20.45); //+1.23,-20.45 printf("%+.2f,%+.2f\n", 1.23, -20.45); return 0; }

来源:今日头条

作者:技术老男孩

点赞:0

评论:0

标题:4.C语言-数据如何输入与输出1

原文:https://www.toutiao.com/article/7254907378695520787

侵权告知删除:yangzy187@126.com

转载请注明:网创网 www.netcyw.cn/b131584.html

()
发表评论
  • 昵称
  • 网址
(0) 个小伙伴发表了自己的观点
    暂无评论

Copyright © 2018-2022 小王子工作室 版权所有 滇ICP备14007766号-3 邮箱:yangzy187@126.com