有下面一段代码:
void say(char name[100] , char sex[100] , short age) {
char str[1000] = "my name is ";
strcat_s(str , sizeof str , name);
strcat_s(str, sizeof str, ", i am a ");
strcat_s(str , sizeof str , sex);
strcat_s(str, sizeof str, " , this year i am ");
// const char * 与 int 的间接级别不同
// 我要如何把 int 转换成 const char * 类型的数据??
strcat_s(str , sizeof str , age);
strcat_s(str , sizeof str , "old!");
printf("定义的字符串:%s\n" , str);
}
int main(void) {
// 定义结构体
struct Person {
char *name;
char *sex;
short age;
};
// 声明结构体类型变量
struct Person p1, p2;
// 结构体变量赋值
p1.name = "grayVTouch";
p1.sex = "male";
p1.age = 22;
// 输出结构体信息
say(p1.name , p1.sex , p1.age);
// 结构体数组
system("pause");
return 0;
}
其中 say
函数:
void say(char name[100] , char sex[100] , short age) { ... }
say()
函数调用
p1.name = "grayVTouch"; // char *
p1.sex = "male"; // char *
p1.age = 22; // short
// 调用
say(p1.name , p1.sex , p1.age)
然后在 say
函数内部执行 strcat_s(str , sizeof str , age)
的时候警告:const char *
和 short
的间接级别不同,该如何进行类型转换??我使用 strcat_s(str , sizeof str , (const char *) age)
进行强制类型转换报错:访问冲突
我该如何正确进行类型转换? 或 合理的做法是??
你的
age
是short
类型,无论如何都不能转成char*
的,不知你的目的是什么。