C语言学习day2

文章详细介绍了C语言中常用的输入输出函数,包括putchar和getchar用于字符的输入输出,puts和gets用于字符串的处理,以及printf和scanf作为格式化输入输出函数的使用方法和注意事项。特别提到了使用这些函数时可能出现的缓冲区管理和垃圾字符问题,以及如何通过fgets避免潜在的安全风险。
摘要由CSDN通过智能技术生成

目录

一.C语言中常用的输入输出函数

        1.1putchar/getchar

        1.2 puts/gets

        1.3 printf/scanf


一.C语言中常用的输入输出函数

        1.1putchar/getchar

                putchar是字符输出函数,putchar函数的作用是向终端发送一个字符。

                函数原型:int  putchar(int c)

                函数说明:putchar的传入参数是int类型的,也就是说在传入参数时是以字符的ASCLL码,返回的时候也是以字符的ASCLL码进行返回的。输出的时候是以这个ASCLL所对应的字符进行输出到终端。

#include<stdio.h>  //头文件,标准的输入输出流


int main()  //main函数是程序的入口
{

    char character='a';  //程序执行到了这里,操作系统会给变量character分配一块内存空间
                         // 然后把字符 ‘a’ 存储在了这一块空间

    putchar(character);
    /*在连续使用getchar函数时,使用了空格或者回车 做为分隔符,那么这些回车和空格也会被当作
字符获取到,这种对我们程序没有用的字符称为--垃圾字符,我们在终端连续获取多个字符 要注意清理
垃圾字符*/

                          
    return 0;//  因为 main() 函数的返回值类型为int 所以需要返回一个值


}

           getchar是字符输出函数,getchar函数的作用获取一个字符。

           函数原型:int getchar(void )

           函数说明:获取到字符后,返回的也是这个字符对应的ASCLL

#include<stdio.h>
int main(){

    char character=getchar();
    putchar(character);
    return 0; 

}

        1.2 puts/gets

                puts函数原型:int puts(const char *s);

                函数说明:puts函数的参数 s是一个指针变量,指针可以指向字符数组或是字符串常量。指针s指向的是字符数组的首地址,或是字符串常量的首地址。功能是向终端输出一个字符串 (自带换行符)。    

#include<stdio.h>
int main(){
    char name[]="张三";
    puts(name);//puts接收的是字符串name的首地址,而不是字符串

    return 0;

}

                gets函数原型:char *gets(char *s); //这是一个指针函数,后续笔记会提到

                函数说明:s 就是用来保存输入的字符串的缓冲区的首地址,返回值也是一个地址。但是需要注意的是使用时要保证缓冲区足够大 否则数组越界访问。

                                     使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符,getchar()是需要清理垃圾字符

#include<stdio.h>
int main(){
	char name[32];
	gets(name);

    printf("---------------------------");

	printf("%s",name);
    return 0; 
}
/*
运行时会出现一个警告,这个警告是因为gets()函数没有限制字符串输入的大小,如果字符串的输入超过了
定义的name数组的大小,那么就会发生栈溢出。

解决方法:使用fgets(char * s,int size,FILE * stream);这个方法设置了字符串的大小
        
第一个参数  需要传入的是字符串或者字符数组的首地址
第二个参数限制了输入字符串的大小
第三个参数 需要传入的是输入或者输入流。参数输入stdin(标准输入)后就可以从键盘中读取数据了,
输入stdout(标准输出)后就可以把数据输出到终端了。
    
*/

        1.3 printf/scanf

                        printf函数原型:int printf(const char *format, ...);

                        函数说明:格式化输出 按照指定的格式将内容输出到终端

format 格式:

%c 字符

%d 有符号十进制整型

%u 无符号十进制整型

%o 八进制

%x 十六进制

%f 浮点型

%s 字符串

%e 指数形式

%% 输出一个%

                scanf函数原型:int scanf(const char *format, ...);

                函数说明:输入函数,按照格式在终端获取内容,scanf格式与printf函数格式相同。

        printf与scanf函数的用法

#include<stdio.h>
int main(){

    int a;
    char name[32];
    
    scanf("%d",a); //当用户输入数据后按回车,scanf这时是从缓冲区读取的数据,而回车符号‘\n’会留在缓冲区
    /*
    scanf("%d\n",&a);
     它的格式是 数字  回车
     当用户第一次输入  数据 回车   时并不会结束程序 这时缓冲区里面没有数据
        
     这时还需要用户再次输入数据 然后按回车键,使‘\n’留在缓冲区后结束当前代码,按顺序执行后续代码
    */
    
    printf("输入数据:a=%d",a): //输出变量a里面存放的数据

    scanf("%s",name); //因为name是一个常量,name是char类型数组的首地址,因此不需要取name的地址
    
    printf("输入字符串:name= %s",name); //找到name数组的首地址,然后把里面的内容按照字符串的形式输出
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值