Sarnwan 2021-09-17 21:35 采纳率: 75%
浏览 216
已结题

c语言,关于malloc(strlen(str)+1)问题


#include <stdio.h>
#include <string.h>

int main(int argc,char const *argv[]) {
    //目的必须要先分配空间
    //最小空间
    char *b="hello";
    printf("%d\n",strlen(b));
    char *a=(char*)malloc(strlen(b)+1);
    printf("%d",strlen(a));
    strcpy(a,b);
    printf("a=%s\n",a);
    printf("b=%s\n",b);
    return 0;
}

img

恳请大家帮帮忙,谢谢了

  • 写回答

3条回答 默认 最新

  • 关注

    有什么问题?
    使用malloc需要引入#include <stdlib.h>

    char *a=(char*)malloc(strlen(b)+1); 只是为a分配了空间、但没有对空间的内容赋值。
    空间的内容是随机不确定的,strlen(a)的值也就随机不确定了。
    你先用 strcpy(a,b); 对a空间的内容赋值。再输出  printf("%d",strlen(a));就正常了。
    
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main(int argc,char const *argv[]) {
        //目的必须要先分配空间
        //最小空间
        char *b="hello";
        printf("%d\n",strlen(b));
        char *a=(char*)malloc(strlen(b)+1);
        strcpy(a,b);
        printf("%d",strlen(a));
        printf("a=%s\n",a);
        printf("b=%s\n",b);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月25日
  • 已采纳回答 9月17日
  • 创建了问题 9月17日