在开发商店管理系统时希望添加修改商品名称的功能(`・ω・´)
为方便商品分类管理,采用如下方式储存名称(10类,每类4种)
struct name{
char* name[4];
}name_list[10];
已尝试的方法包括
scanf("%s",name_list[x].name[y]);//写入位置 .... 时发生访问冲突
char temp[10];
scanf("%s",temp);
strcpy(name_list[x].name[y], temp);//写入位置 .... 时发生访问冲突
请问怎样能够读入字符串并赋到指针字符串中(或者有没有同时满足分类要求和修改需求的存储商品名方案)_(:з」∠)_
struct name{
char name[4][100];
}name_list[10];
char *name[4]
是指针数组,4个char *
指针,直接拷贝赋值出错,要不然就主动申请内存
改成char name[4][100]
字符串数组,缺陷是商品名不超过100
name数组的大小得和你输入的字符串数组大小一样吧,不然可能会空间不够,而且你scanf里面都不加&的吗?
改成这样试一下
struct name{
char* name[10];
}name_list[10]
代码问题很大,你的name字段不是字符串,是一个字符指针数组。如果想定义可修改的字符串,定义为const char * ,因为现在VS里面字符串都是const char了。
#include<iostream>
struct name {
const char* name;
}name_list[10];
int main() {
//const char* b = "abc";
name_list[0].name ="cde";
printf("%s", name_list[0].name);
return 0;
}
或者用char数组
#include<iostream>
struct name {
char name[4];
}name_list[10];
int main() {
printf("输入商品名: ");
scanf_s("%s", name_list[1].name,4);
printf("%s",name_list[1].name);
return 0;
}