一.getchar()
1.返回值:返回读到的ASCⅡ码值
2.使用方法:
1 #include<stdio.h> 2 3 int main() 4 { 5 char c; 6 while((c = getchar()) != ' ') 7 { 8 printf("%c",c); 9 } 10 11 return 0; 12 }
3.功能:从输入缓冲区中读取一个字符 是一个阻塞函数(目前了解就好 后面应该有机会学到这方面的知识)
二.如何把getchar()到的字符串存起来?
1.引入:
我们首先应该思考的问题:“内存申请问题”
我们并不知道所要输入的字符串是多长的 那么我们应该怎么申请这块空间来存这个字符串呢
申请的太大 空间浪费 申请的太小 肯定存不下就是了 这可咋整(突然冒出东北话)
直接定义长度的那种方法就肯定不行了 所以 不妨试试malloc(我觉得ok)
2.假设:现在我要输入1234567890
3.基本思路:
①先申请一个长度为5的空间 把所get到的字符一个一个存进去
当存到倒数第二个空间的时候 而且你还没输完!(警报警报 您的内存已经不够用)
这个时候我们把最后一个空间 存为' '
把最后一个空间存为' '的目的是:为了让目前所存的这些字符变成一个字符串(你猜我要拿这个字符串干啥 嘻嘻)
②申请一个更大的空间 比如:长度=长度+5
先把之前的字符串拷贝到这个新的字符串里
然后从' '的位置继续放get到的字符
以此类推..
4.函数实现:(注释感觉敲重要 你要不要考虑看一下)
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 char* GetString(); 6 7 int main() 8 { 9 char* p = GetString(); 10 printf("%s ",p); 11 12 return 0; 13 } 14 15 char* GetString() 16 { 17 char c; 18 19 int nSize = 5; 20 //初始长度 21 int nCount = 0; 22 //用来标记存了多少个字符 23 24 char* str = (char*)malloc(sizeof(char)*nSize); 25 //创建一个字符数组 初始长度为5 26 char* pMark = str; 27 //让pMark指针始终指在字符数组的首元素的位置 28 char* newStr = NULL; 29 30 while((c = getchar()) != ' ') //只要没敲回车 存储就一直进行 31 { 32 *str = c; 33 str ++; 34 nCount ++; 35 36 if(nCount + 1 == nSize) //如果存的元素是内存的倒数第二个空间了 37 { 38 *str = '