在C中更改char []

时间:2018-06-09 14:20:08

标签: c arrays string replace

我正在寻找答案而找不到任何地方。我希望你能帮助我。我写了一个简单的应用程序,其中包含一个名为worker和的struct。但是,当我想改变名称的价值时,我无法做到。我不知道为什么。也许你无法帮助我或你知道另一种方法吗?我的代码:

struct workers {
char name[256]="no";
int pay=-1;
};

void addOne(struct workers work[20]) {
    char name[256];
    int i=0;
    for (i = 0; work[i].name != "no"; i++) {}
    printf_s("Enter name of worker: ");
    scanf_s("%s", &name);
    //-----error here-----
    work[i].name = name;
}

int main()
{
    int i;
    struct workers work[20];
    for (i = 0;i < 20; i++) {
        if (work[i].name != "no") {
            work[i].pay = 100 * i;
        }
    }
    for (i = 0; i < 20; i++) {
        printf_s("%s\t%d\n", work[i].name, work[i].pay);
    }
    return 0;
}

1 个答案:

答案 0 :(得分:-1)

work[i].name = name;

上述问题出在问题所在。

更改如下:

snprintf( work[i].name, sizeof(work[i].name), "%s", name);

您所做的是尝试更改数组的基本指针,而不是名称。

此外,代码中还有更多错误,请解决它们。

无法像在C中那样将默认值设置为结构。

您必须使用&#34; no&#34;编写代码来初始化每个数组实例名称变量。在循环中然后使用其中一个字符串比较函数来比较字符串。然后调用你的addOne。