C语言学习笔记

文章详细介绍了C语言中的几个主要输入输出函数,包括printf用于标准格式输出,其支持%d、%u、%o、%x等格式控制符,以及putchar用于输出单个字符,puts用于输出字符串。同时,文章也讨论了scanf的使用,它是标准格式输入函数,能处理各种类型的数据输入,并提到了getchar和gets函数,分别用于获取单个字符和字符串,其中gets函数因安全性问题需谨慎使用。
摘要由CSDN通过智能技术生成

输入输出

printf

标准格式输出,必须包含头文件#include <stdio.h>才能使用

函数原型

int printf(const char *format, ...);

基本用法

printf("字符串");

字符串里面的内容会原样输出

printf("字符串 格式控制串", 输出表 );

格式控制符

%d :以有符号数十进制输出

%u :以无符号数十进制输出

%o :以八进制输出

%x :以十六进制输出,a,b,c,d,e,f为小写字母

%X: 以十六进制输出,A, B, C, D, E, F为大写字母

%c :以字符的方式输出

%f :以浮点型的方式输出

%e :以科学计数法的方式输出浮点型数据

%g :以科学计数法和浮点数据其中最短的一种输出浮点数

%s :以字符串的方式输出

%p :输出地址

%%:输出%

#include <stdio.h>
​
int main()
{ 
    int a = 10;
    char b = 'A';
    float pi = 3.14;
    char *p = "amazing";//p是一个指针变量,用来保存字符串常量的首地址
    unsigned int c = -5;
​
    printf("a:%d\n", a);
    printf("b:%c\n", b);
    printf("pi:%f\n", pi);
    printf("p:%s\n", p);
    printf("-----------\n");
    printf("c:%u\n", c);
    printf("0a:%o\n", a);
    printf("0xa:%x\n", a);
    printf("0Xa:%X\n", a);
    printf("----------\n");
    printf("e pi:%e\n", pi);
    printf("g pi:%g\n", pi);
    printf("----------\n");
    printf("p:%p\n", p);
    printf("%%\n");
    return 0;
} 
​
​
结果:
a:10
b:A
pi:3.140000
p:amazing
-----------
c:4294967291
0a:12
0xa:a
0Xa:A
----------
e pi:3.140000e+00
g pi:3.14
----------
p:0x55a471881004
%
​

修饰符

#:用于修饰%o,%x,%X,为输出结果自动补全前缀

m:用于修饰%d,限制域宽,若域宽<m,则左补空格

-m:用于修饰%d,限制域宽,若域宽<m,则右补空格

.n:用于修饰%f,保留小数点后n位

l:用于修饰%d或者%f,来打印long类型和double类型

0:用于修饰%md,将域宽不够的地方用0补齐

#include <stdio.h>
​
int main(int argc, char *argv[])
{ 
    int a = 48;
    int b = 97;
    float c = 3.832400;
    long d = 1234;
    short e = 12;
    printf("a:%d b:%d\n", a, b);
    printf("--------------\n");
    printf("a:%#x\n", a);
    printf("a:%#o\n", a);
    printf("--------------\n");
    printf("a:%6d b:%6d\n", a, b);
    printf("a:%-6d b:%-6d\n", a, b);
    printf("--------------\n");
    printf("c:%f\n", c);
    printf("c:%.2f\n", c);
    printf("--------------\n");
    printf("d:%ld\n", d);
    printf("e:%d\n", e);
    printf("a:%06d\n", a);
    return 0;
} 
​
结果:
a:48 b:97
--------------
a:0x30
a:060
--------------
a:    48 b:    97
a:48     b:97    
--------------
c:3.832400
c:3.83
--------------
d:1234
e:12
a:000048
​

输出表

与格式控制串一 一 对应的一系列常量或者变量,此表会将格式控制符一 一替换

putchar

单个字符输出

头文件:#include <stdio.h>

函数原型:int putchar(int c);

用法:

putchar(字符\char类型的变量进去)

putchar(ASCII码值)

注意:putchar输出单个字符不会进行换行操作

#include <stdio.h>
​
int main(int argc, char *argv[])
{ 
    char a = 'S';
    putchar(a);
    printf("\n");
    putchar('a');
    putchar('\n');
    putchar(48);
    putchar('\n');
    return 0;
} 
​
结果:
S
a
0

puts

字符串输出

头文件:#include <stdio.h>

函数原型:

int puts(const char *s);

注意:输出的字符串会自动换行

参数:

可以传一个字符串进去

可以传一个地址进去

#include <stdio.h>
​
int main(int argc, char *argv[])
{ 
    puts("hello world");
    char buf[10] = "amazing";
    char *s = "traditional";
    puts(buf);
    puts(s);
    return 0;
} 
​
结果:
hello world
amazing
traditional
​

scanf

标准格式输入

头文件:#include <stdio.h>

函数原型:

int scanf(const char *format, ...);

用法:

scanf("格式控制串", 地址表);

传递地址表时,普通变量要加&符号

&:

& + 变量 -->取该变量的地址

格式控制符

%d :以有符号数十进制输入

%u :以无符号数十进制输入

%o :以八进制输入

%x :以十六进制输入,a,b,c,d,e,f为小写字母

%X: 以十六进制输入,A, B, C, D, E, F为大写字母

%c :以字符的方式输入

%f :以浮点型的方式输入

%e :以科学计数法的方式输入浮点型数据

%s :以字符串的方式输入

%i :自动识别输入的是十进制,十六进制,八进制(输入时必须加上前缀)

%[]:用于输入字符串,只能识别[]里面的内容,遇到不能识别的内容则结束输入,如果[^],则除了[]里面的内容都能识别

例:

%[1]只能识别字符1
​
%[1-9]只能识别字符1-9
​
%[^1-9]除了1-9不能识别,其他的都能识别
​
如果想让scanf识别空格和tab
则:%[^\n],这样子scanf除了换行符都能识别

%*抑制符

吃掉所对应位置的内容

例:

%*c就可以吃掉所对应位置的脏字符

#include <stdio.h>
​
int main(int argc, char *argv[])
{ 
    /*
    int a = 0;
    scanf("%d", &a);
    printf("a:%d\n", a);
​
    char b = 0;
    scanf("%c", &b);
    putchar(b);
​
    char arr[10] = {0};
    scanf("%s", arr);
    puts(arr);
    */
​
    /*
    int c = 0;
    scanf("%i", &c);
    printf("c:%d\n", c);
    */
    
    /*
    char buf[10] = {0};
    scanf("%[1-9]", buf);
    puts(buf);
    */
​
    char e = 0;
    char f = 0;
    scanf("%c%*c%c", &e, &f);
    putchar(e);
    putchar('\n');
    putchar(f);
    putchar('\n');
    return 0;
} 
​

getchar

获取单个字符

头文件:#include <stdio.h>

函数原型:

int getchar(void);

用法:

定义一个char类型变量来接受getchar从键盘上获取的字符

char a = getchar();

#include <stdio.h>
​
int main(int argc, char *argv[])
{ 
    char a = 'a';
    a = getchar();
    putchar(a);
    putchar('\n');
    return 0;
} 
​
结果:
h
h
​

gets

从键盘上获取字符串

头文件:#include <stdio.h>

函数原型:

char *gets(char *s);

用法:

gets(地址)

将从键盘上获取的字符串保存到该地址中

危险性:gets没有设定获取字符串的上限,容易因为非法访问内存而产生段错误

*** stack smashing detected ***: terminated
已放弃 (核心已转储)
注:这个是段错误,常常因为非法访问内存而导致

#include <stdio.h>
​
int main(int argc, char *argv[])
{ 
    char a[10] = {0};
    gets(a);
    putchar('\n');
    puts(a);
    return 0;
} 
​
​
结果:
12345
​
12345
​
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值