arrays - 指向从 char[13] 分配给 char 的整数转换的不兼容指针
问题描述
我已经创建了一个学生结构,当我为结构内定义的字符数组分配名称时,它给了我一个错误“不兼容的指针指向整数转换,将 char 分配给 char [13] ....任何人都可以解释我的原因为什么会这样?
int main()
{
typedef union {
int roll_no;
char name[30];
} student;
student student1;
student1.roll_no = 5;
student1.name[30] =
"shivam kumar"; // this is line where it is giving me error
printf("\n%d", student1.roll_no);
printf("\n%s", student1.name);
return 0;
}
解决方案
在 C 中,您不能以这种方式复制字符串:
student1.name[30] =
"shivam kumar"; // this is line where it is giving me error
而是使用strcpy
:
student student1 = {0};
student1.roll_no = 5;
strcpy(student1.name, "shivam kumar"); //<--
最好使用strncpy
来确保目标缓冲区没有溢出:
strncpy(student1.name, "shivam kumar", sizeof(student1.name));
student1.name[sizeof(student1.name) - 1] = '\0'; // make sure it's NUL-terminated.
推荐阅读
- angular - Angular 5 在使用 ngx-pica Image resizer 时冻结 UI
- kubernetes - Kubernetes - 服务之间通信的网络策略
- javascript - 检查子组件是否呈现 - Jest、Enzyme
- html - 引导移动文本超出屏幕
- python - 使用 python 和 pandas 组合 csv 列
- javascript - Javascript 中的 JSON 帮助
- perl - 当严格的参考检查中存在同一级别的值时,perl检查是否存在哈希键
- python - Selenium 在 Webelement 中通过 xpath 查找
- android - Android 热像仪模拟
- java - 在 IntelliJ IDEA 中启用对 JSON 文件的多行支持