指针字符串的赋值问题

在开发商店管理系统时希望添加修改商品名称的功能​(`・ω・´)

为方便商品分类管理,采用如下方式储存名称(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;
}