《C和指针》学习笔记---快速上手

快速上手章节涉及到的C语言知识点:

1、gets()

原型:char *gets(char *buffer)

说明:从标准输入设备(stdio流)读取输入的字符串,对在标准输入设备中输入的字符串长度没有限制,以换行符或EOF作为

字符串读取结束,因此要求gets的输入参数buffer的空间大小足够大,以免读取字符串的时候,不发生内存溢出问题。如果发生

溢出,多出来的字符将被写到堆栈中,从而会覆盖堆栈原先的内容,破坏一个或多个不相关的变量的值,造成意想不到的问题。

为避免问题,使用fgets(stdin)代替gets()。

#include<stdio.h>

int main(void)
{
    char buffer[1024] = {0};
    
    gets(buffer);
    printf("buffer : %s\n", buffer);
    
    return 0;
}

 

2、puts()

原型:int puts(const char *string)

说明:puts()用来将字符串输出到标准输出设备(stdout流,如屏幕),字符串的结束标志符'\0'转换为换行符。参数string可以

是字符数组名或字符指针,也可以直接将字符串常量写入到puts()函数的形参位置。

3、getchar()

原型:int getchar()

说明:getchar()由宏实现:#define getchar()  getc(stdin)。getchar()的返回值为int型。当代码运行到getchar()处时,程序会在

此停住,等待用户输入一个或多个字符,输入的字符被存放在键盘的缓冲区,直到用户按下回车键后,getchar()开始自动从

stdio流(键盘缓冲区)中逐个读取字符,同时将该字符对应的ASCII码值显示到屏幕。

getch()函数与getchar()函数功能基本相同,区别是getch()直接从键盘获取键值(非缓冲输入函数),不等待用户按回车键,

只要用户按下任意一个键,getch()就立刻返回,返回值也是该字符对应的ASCII值,但是不回显到屏幕上。getch()通常用

于程序调试,例如,代码运行到getch()处停止,用户查看getch()之前的调试信息,按任意键之后,代码继续执行。

4、函数原型/声明

(1)在函数声明的时候,对于输入参数的声明时,如果函数入参为数组时,可以不指定数组的长度,如

int   func(int array[],int var);

(2)函数的输入参数,也可以不写,但是函数的类型关键字必须给出。但是通常会写出,以便代码阅读。

(3)如果传给函数的实参是不让修改的,那么在函数声明的时候,将函数的形参声明为常量,用const修饰。例如

int func(int const array[],int const var)

在func()中不能修改传给形参arra的数组元素值和形参var的值。

5、常用几个字符串处理函数

       (1)strcat

        strcat函数用来将其第二个字符串参数添加到第一个字符串参数尾部,使用strcat是用户需确保第一个字符串参数的剩余

        空间,满足第二个字符串所占用的内存空间。

        (2)strchr()

        strchr()函数用来查找第二个字符参数在第一个字符串参数中第一次发现的位置。

        (3)strstr()

        strstr()函数与strchr()功能相似,不同的是,strstr用来查找字符串。

6、fgets()

原型:char *fgets(char *buffer, int n, FILE *stream)

说明:fgets()用来从文件结构体指针指向的文件中逐行读取字符串,每次读取的字符串长度为n-1,并将读取的内容

(包含读到的换行符)放在字符指针buffer指向的内存空间。如果在未读满n-1个字符时,读到换行符或者EOF

(文件结束标志),则结束本次读取动作。

总结下来就是:调用fgets()函数时,每次最多只能读取n-1个字符(包含换行符)。读取结束后(结束标志为读取到

n-1个字符或文件中的换行符或者文件结束标志EOF),系统自动在读取的字符串末尾添加一个字符串结束符'\0',

放到buffer指向的位置,并将buffer作为返回值返回。

如果发生读取错误fgets()返回NULL,或者没有读到任何字符遇到EOF也返回NULL。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值