Chinaunix首页 | 论坛 | 博客
  • 博客访问: 470785
  • 博文数量: 98
  • 博客积分: 3265
  • 博客等级: 中校
  • 技术积分: 1227
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 00:29
文章分类

全部博文(98)

文章存档

2012年(6)

2011年(83)

2010年(9)

分类: C/C++

2011-04-10 09:21:38

字符数组与字符串是有区别的,字符串是字符数组的一种特殊形式,存储时以“\0”结束,所以,存放字符串的字符数组其长度应比字符串大1。对于存放字符的字符数组,若未加“\0”结束标志,只能按逐个字符输入输出。

 
//字符数组的正确使用方法。 

//字符串=%s的话要以\o结束

//字符=%c的话可不以\o结束 
#include
main()
{
    char str[10],*p=str;
    int i;
    scanf("%s",str);/*输入的字符串长度=10*/
    for(i=0;i<10;i++)
    printf("%c",*p++);/*正确输出*/
    printf("\n");
    p=str;
    printf("%s",p);/*字符数组无'\0'标志,输出出错*/
    puts(str);/*字符数组无'\0'标志,输出出错*/

程序运行:

输入:asdfasdfgh\o

输出:asdfasdfgh

asdfasdfgh\o

asdfasdfgh\o

字符数组以字符串形式输出,若无“\0”标志,则找不到结束标志,输出出错。 

  


 
//用指向字符串的指针变量处理两个字符串的复制。
//字符串的复制要注意的是:若将串1复制到串2,一定要保证串2的长度大于或等于串1。
#include
main()
{
    char str1[30],str2[20],*ptr1=str1,*ptr2=str2;
    printf("inputstr1:");
    gets(str1);/*输入str1*/
    printf("inputstr2:");
    gets(str2);/*输入str2*/
    printf("str1------------str2\n");
    printf("%s.......%s\n",ptr1,ptr2);
    while(*ptr2)*ptr1++=*ptr2++;/*字符串复制*/
    *ptr1='\0';/*写入串的结束标志*/
    printf("str1------------str2\n");
    printf("%s.......%s\n",str1,str2);
}
程序运行:

inputstr1:qqqqqq\o

inputstr2:zzzz\o

str1------------str2

qqqqqq\o.......zzzz\o

str1------------str2

zzzz\o.......zzzz\o




//串连接时,串1的长度应大于等于串1与串2的长度之和。

printf("%s.......%s\n",str1,str2)替换为

printf("%s.......%s\n",ptr1,ptr2);

//用指向字符串的指针变量处理两个字符串的合并。
#include
main()
{
char str1[50],str2[20],*ptr1=str1,*ptr2=str2;
printf("inputstr1:");
gets(str1); //输完直接回车
printf("inputstr2:");
gets(str2);
printf("str1------------str2\n");
printf("%s.......%s\n",ptr1,ptr2);
while(*ptr1)ptr1++;/*移动指针到串尾*/
while(*ptr2)*ptr1++=*ptr2++;串/*连接*/
*ptr1='\0';/*写入串的结束标志*/
ptr1=str1;ptr2=str2;
printf("str1------------------str2\n");
printf("%s.......%s\n",ptr1,ptr2);
}
运行结果:

inputstr1:qqqqq

inputstr2:aaaaaaaa

str1------------str2

qqqqq.......aaaaaaaa

str1------------------str2

qqqqqaaaaaaaa.......aaaaaaaa


阅读(1510) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~