
可以创建Scanner类来从键盘输入一个字符,用String类型来接收,再使用String的charAt功能,具体步骤如下:
1、先创建一个Scanner对象,如:Scanner sc = new Scanner(System.in)
2、然后再调用Scanner对象sc的next()方法获取控制台输入,定义一个String类型的变量s来接收控制台输入的字符,如:String s = sc.next()
3、调取变量s的charAt(0)方法获取第一个字符,如:char c = s.charAt(0)
扩展资料
字符型值有如下三种表示形式
1、直接通过单个字符来指定字符型值,例如‘A’、‘9’和‘0’等。
2、通过转义字符表示特殊字符型值,例如‘\n’、‘\t’等。
3、直接使用Unicode值来表示字符型值,格式是‘\uXXXX’,其中XXXX代表一个十六进制的整数
字符型值也可以采用十六进制编码方式来表示,范围是‘\u0000’~‘\uFFFF’,一共可以表示65536个字符,其中前256个(‘\u0000’~‘\u00FF’)字符和ASCII码中的字符完全重合。
由于计算机底层保存字符时,实际是保存该字符对应的编号,因此char类型的值也可直接作为整型值来使用,它相当于一个16位的无符号整数,表数范围是0~65535。
如果把0~65535范围内的一个int整数赋给char类型变量,系统会自动把这个int整数当成char类型来处理。
参考资料:百度百科-char数据类型
首先str只是一个指针,指向了一个字符串常量“awgweg",所以你不能再往后添加了,否则会引起内存覆盖异常。另外,*str+=c之后这个计算的只是字符串str的第一个字符a相加c,而不是把c给连接到str的后面。所以要么先申请一段内存给指针str这个很繁琐的,建议直接使用现成的sting类,当然如果你要自己学习,下面给出思路。
这涉及到动态维护数组,一般初始化时候先根据你储存的字符串的每次递增大小评估并预定一个缓存大小,为了减少程序在每次新增字符或字符串时调整次数,确保多预留一点。当然步增的大小也不能太大,太多预留空间会占内存,所以适当选择进行平衡。
比如根据需求评估下来,每次增加100个字符比较合适,那么宏定义StepSize 100,即每次增加100个字符,那么先初始化:
char *pBuff=new char[StepSize]
当你的程序在插入新字符或新字符串时,进行判断空间是否够用,快不够时,就需要增大空间,你可以编写一个Resize函数调整缓存空间,和一个插入函数,插入函数在需要时调用Resize函数去扩展空间。
调整缓存空间和插入字符的思路如下:
1、重新计算新的实际所需内存大小以及预留空间,最终计算出总体大小NewSize。
2、备份原内存地址,以便最后释放。
char *tp=pBuff
3、重新分配内存空间
char *pBuff =new char[NewSize]
4、计算新字符插入点和新字符串长度
5、使用字符串复制函数将插入点之前的所有字符复制到新缓存中
6、在新缓存中,在插入点开始复制新增字符或字符串。
7、将插入点之后,将原缓存中剩余字符串复制到新缓存尾部(起始位置为新增长度+插入点)。
8、重新计算并记录有效字符长度。
9、释放原缓存
delete []tptp=null
完成以上步骤,实现将新字符插入原字符缓存中,并根据实际需要,扩展缓存大小。
最好用类来封装,希望对你有帮助。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)