c语言输入任意长度字符串,读取不定长字符串输入 | 您所在的位置:网站首页 › c语言指针定义字符串大小是多大的 › c语言输入任意长度字符串,读取不定长字符串输入 |
C语言通常使用scanf处理输入,如果要读取字符串,那么就需要定义一个字符数组(char[])。可是,如果数组定义长度不足,就可能发生溢出。 在C语言里有个可以用来读取字符的函数(getchar),我们可以利用这个函数来实现不定长的字符串输入。下面我们就来讲讲如何做到这一点。 首先,说一下原理:getchar每次只能读取一个字符。因此,我通过循环使用getchar逐个读取字符的方式,将所有输入字符读取。 那么,我们要先解决一个问题: 什么时候结束循环不再读取呢? 当我们输入字符串后,按下Enter键,那么输入的字符串就会被程序接收,写入输入缓冲区的除了刚才输入的字符串,还会有一个换行符\n,因此getchar当读取到字符\n时,即可跳出循环,完成读取。跳出循环后我们还要在后面加上\0,这样,它才能成为一个真正的字符串。 第二问题: 存放在哪儿? 当我们使用scanf读取字符串时,我们将字符串存放在字符数组(char[])里面,那么我们使用循环读取字符时,就需要有一个同样连续的内存空间来存放读取到的字符。而且,我们因为不知道到底会读取到多长的字符串,长度是不固定的,所以使用malloc来动态申请一个连续的内存空间。 因此,我们准备两块内存指针: char* str; char* _str; 先给其中一个分配2个char的内存空间(一个用来存\0),同时用i来记录输入字符串的个数。 int i = 1; s |
CopyRight 2018-2019 实验室设备网 版权所有 |