c语言中字符变量字符串和字符数组应用

c语言中字符变量字符串和字符数组应用

ID:8928601

大小:29.50 KB

页数:3页

时间:2018-04-12

c语言中字符变量字符串和字符数组应用_第1页
c语言中字符变量字符串和字符数组应用_第2页
c语言中字符变量字符串和字符数组应用_第3页
资源描述:

《c语言中字符变量字符串和字符数组应用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C语言中字符变量字符串和字符数组应用字符变量(type`char`?字符串(string)和字符数组(type`char`arrary)是C语言中非常重要的结构成分,也是应用编程中常发生混淆?导致错误发生的成分?一?注意区别字符数组中的字符和字符串C语言中无字符串变量,但提供了字符数组characterarrary)用于存储字符串,例如:charstr[]="Hello";同时,字符数组亦用于存储字符或字符变量,例如:/*存放字符例*/charChars[]={`H``e`,`1``1`,`o`};/*存放字符变量例*/char

2、ch=getch();charCharVar[]=ch;str和Chars的内容尽管由相同字母构成,但前者是字符串(str)后者为一列字符(Chars)?两者在内存中的结构不同,即字符串结尾有NULL0(字符串终止符)?在应用编程实践中,常常需要从键盘获取字符,依次存入字符数组中,再以字符串输出函数输出到屏幕等,譬如,在中文环境?图形模式下中文字符的键盘输入和屏幕显示?如混淆字符数组中字符组与字符串的差别,则可能得到奇怪的结果?如例:CharStr(){inti,CharNum=5;unsignedcharstr[80];for

3、(i=0;i

4、重写前述程序码为:CharStr(){inti,CharNum=5;unsignedcharstr[80];for(i=0;i

5、字符串分配合适的内存空间,否则将可能发生乎意料的错误?下面的程序码在编译器或许通过顺利,但可能产生错误的结果:ConcatStr(char*str){char*ptr;char*ptr=strcat("hello",str);/*错误!*/printf("Newstring=%s",ptr);return;}问题源于没有为字符串指针ptr指向的字符串"Hello"分配内存空间?函数strcat(char*dist,char*src)返回*dist的地址,因此,*dist必须指向一个适当大小的内存缓冲区(安全的大小应>=dist+

6、stc+1)下面是正确的程序码:ConcatStr(void){charbuffer[80];/*静态分配一内存缓冲区给buffer*/strcpy(buffer,"Hello");/*拷贝字符串"Hello"到buffer缓冲区*/strcat(buffer,"World");/*链接字符串"friends"到buffer缓冲区*/printf("Newstring=%s",buffer);return;}三?正确应用字符变量类型char的singed和unsigned前缀假如说明一个字符变量类型为char,多数编译器会缺省地

7、将其视为signed?若此字符变量只用于存放字符,即使是ASCII序数在128-255的字符,亦不会有问题发生?但若将此变量用于与整型数比较,或作为一个数组的索引序号,则可能会发生问题:IndxChar(void){inti;charch,outch;/*缺省为signed*/charIndx[255];for(i=0;i<255;i++)Indx[i]=i;ch=getchar();if(ch>127&&ch<255)/*与>127的整型数比较,结果非true*/outch=Indx[ch];/*错误!作为数组的索引*/out

8、ch=`x40';/*如果非ture,则给outch赋@值*/printf("outputcharacter=%c",outch);return;}上述程序码将总是输出字符@(ASCII64)?因为signedchar类型赋值范围是0-127,超出此范围的字符

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。