C和指针第四章编程练习题小结2

函数原型  void copy_n( char dst[], char src[], int n)

实现如下:  将一个字符串从数组src复制到dst,复制n个字符。

1:若src字符串小于n,则在dst的字符串尾部补足足够的nul字符。

2:src的长度大于或等于n,在dst中存储n个字符即可,此时dst将不以nul字节结尾。

自己写的:设置一个标志位,遇到空字符时,标志位置一,往dst数组中写0.

void copy_n( char dst[], char src[], int n)

{

         int i,state=1;

         for(i=0;i<n;i++)

         {       

                   if( (src[i] != '\0') && state )                                 //此处0 和  '\0'都是可以的

                   dst[i]= src[i];

                   else //状态位置一,表示直接补nul即可

                   {

                            state=0;

                            dst[i]='\0';

                   }

         }

}

下面的为参考答案:  //两个数组用不同的变量 i,j 查找元素。

void copy_n( char dst[], char src[], int n)

{

         int i,j=0;

         for(i=0;i<n;i++)

         {       

                   dst[i]= src[j];  

                   if(src[j] != 0)

                            j++;

         }

}


注意 printf 的特性, scanf 特性,以及字符串输入输出处理办法!

scanf输入字符串 遇到空格等就会停止输入。所以最好用gets() 函数: gets(src); 来输入字符串


同样printf输出字符串的方式printf("%s\n",src); src为存储字符串的数组名,

假如dst数组只从src中复制10个字符。若src长度大于10个字符,则直接用printf输出src会出错。因为在printf函数中以字符串格式输出,必须等到出现’\0’才会结束。dst数组中没有’\0’。



字符串常量的误区:自己用gets函数向数组中输入字符串常量 “dwe” 时候,直接在输入框输入" dwe",实际上直接输入dwe即可。 

char temp[100];

         gets(temp);

         for(i=0;i<10;i++)

         {

                   printf("%d\n",temp[i]);

         }

 

用上述for循环可以看到,输入字符串”dwe” ,在数组的里存储占了6个单位

34 100 119 101 34 0

其中 34 对应的ascii码为“ 

         100   对应的ascii码为 d

0         对应的ascii码为  nul

 

 

 

而要输入字符串常量”dwe”,应当是输入dwe 。如下图可见。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值