老李的果酱 2022-05-22 10:14 采纳率: 83.3%
浏览 21
已结题

关于数组字符串问题。

img


上图,我想把字符串复制到另一个数组,但是只有i<=13的时候才能把整个字符串打印出来,还有不知道我这个方法对不对。
还有一个问题,如果我#define STR "文字。"
然后怎么才能把他复制过来我另外定义的str,求解答,谢谢。

  • 写回答

2条回答 默认 最新

  • a5156520 2022-05-22 11:04
    关注

    下面是我的理解,供参考:
    我用strlen函数计算了下str地址处的字符的长度是14,根据推测,应该是中文字符占据了两个字符长度的原因:“你的密码是”里面五个中文字符占据10个字符长度,后面的":!!!"四个英文状态下的字符占据四个字符长度,总共14个字符长度,所以需要用14个字符的长度才能容纳这些字符,如果再加上结尾的空字符'\0',则需要15个字符长度。
    用#define STR “文字。”定义的明示常量可以用字符指针赋值为STR就可以访问了。(参考:C Prime Plus第6版第324页 )
    下面是测试的代码:

    #include <stdio.h>
    #include <string.h>
    #define STR2 "文字。"
    int main(void){
        
        char str[]={"你的密码是:!!!"},STR[14];
        int i;
        
    //        for(i=0;i<=14;i++){
    //        printf("i=%d,STR[%d]=%c,STR[%d]=%d\n",i,i,STR[i],i,STR[i]);
    //    }
    
        printf("strlen(str)=%d\n",strlen(str));
        for(i=0;i<=13;i++){
            STR[i]=str[i];
        }
        //用字符指针指向这个由define定义的明示常量,然后访问这个明示常量,参考C Primer Plus第六版第324页,第522页 
        char * ar =STR2;  
        printf("%s\n",ar); 
        
    //    for(i=0;i<=14;i++){
    //        printf("i=%d,STR[%d]=%c,STR[%d]=%d\n",i,i,STR[i],i,STR[i]);
    //    }
    
        printf("%s\n",STR);
        
        return 0;
    } 
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件