snprintf不能使用"字符串指针"赋值,可以使用字符数组

Posted timer_go

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了snprintf不能使用"字符串指针"赋值,可以使用字符数组相关的知识,希望对你有一定的参考价值。

#cat snprintf.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student{
    int age;
    char *name;
};

int main(void)
{
    /*t1 结构体指针*/
    struct student *t1;
    t1 = malloc(sizeof(struct student));
    t1->age = 11;
    t1->name = "ahao.mah";

    /*t2 结构体变量*/
    struct student t2;
    t2.name = "jack";
    t2.age = 22;

    printf("t1:%s\n", t1->name);
    printf("t2:%s\n", t2.name);

    /*snprintf不能使用字符串指针赋值*/
    char *a;
    char *dev = t1->name;
    /*可以使用字符串数组*/
    //char dev[10];
    //strcpy(dev, t1->name);

    printf("dev:%s\n", dev);
    sprintf(a, "/dev/%s", dev);
    printf("a:%s\n", a);

    return 0;
}

以上是关于snprintf不能使用"字符串指针"赋值,可以使用字符数组的主要内容,如果未能解决你的问题,请参考以下文章

snprintf()函数使用方法

snprintf()函数使用方法

难道指针数组不能指向多个字符串吗?

C将int转换为字符串[重复]

函数指针--菜鸟求解。

C语言,用指针方式定义的字符串为啥不能修改?