Изменение char [] в C - PullRequest
       10

Изменение char [] в C

0 голосов
/ 09 июня 2018

Я ищу ответ и нигде не могу найти.Я надеюсь, что вы мне поможете.Я пишу простое приложение, которое включает в себя структуру с именем работника и.Но когда я хочу изменить значение имени, я не могу этого сделать.Я не знаю почему.Может быть, вы не можете помочь мне, или вы знаете другие способы сделать это?Мой код:

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 голосов
/ 09 июня 2018
work[i].name = name;

В приведенной выше строке указана проблема.

Измените, как показано ниже:

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

То, что вы сделали, пытались изменить базовый указатель массива, а неимя.

Также в коде было еще несколько ошибок, пожалуйста, исправьте их.

Невозможно установить значения по умолчанию для структуры, как вы сделали в C.

Вы должны написать код для инициализации каждой переменной имени экземпляра массива с помощью «no» в цикле, а затем использовать одну из функций сравнения строк для сравнения строк.А затем позвоните своему аддону.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...