О функции 'strcpy', использующей

char input[32];
char name[32];
char discountUser[32];//not sure to using about arrays.
char notDiscountUser[32];//not sure to using about arrays.
int i,j;
int len;
fgets(input,32,stdin);
sscanf(input,"%s",name);
len = strlen(name);
for(i=0,j=0; i < len; i++)
{
if(isdigit(name[i]))
{
    digits[j] = name[i];

    if (digits[j] > 48)
    {
        strcpy(discountUser[i],name); //i want to stored the name at i index
        printf("you have discount code\n");
    }
    else if (digits[j] <= 48)
    {
        strcpy(notDiscountUser[i],name); //i want to stored the name at i index
        printf("you don't have discount code\n");
    }
    j++ ;
}
}

Мне нужно отделить пользователя, который имеет код скидки или нет, введите 3charofname и 1 цифру, например. cat2, если цифра больше 0, поэтому у пользователя есть скидка, если цифра 0, поэтому у него нет примера скидки. У меня cat0 bee1 ear2 eye0, когда я печатаю notdiscount: cat0, eye0 discount: bee1, ear2

я проверяю цифры по isdigit и у меня проблемы с копированием имени пользователя по strcpy . Спасибо за помощь.:]

1 ответ

Решение

Используйте 2D-массивы как:

char discountUser[N][32];  
char notDiscountUser[N][32];  

где N Максимальное количество пользователей, вы можете #define это к некоторой ценности.

То, что вы пытаетесь сделать, это:

char discountUser[32];

Это строка, если вы используете char discountUser[i] вы имеете в виду char (Один символ, а не строка) в индексе i в строке discountUser,

Сейчас, strcpy ожидает строку в качестве входных данных для обоих своих аргументов, поэтому вы не можете передать discountuser[i] как его вход.

Когда вы объявляете 2D-массив, как я уже говорил выше, discountuser[i] будет относиться к string (на самом деле dicountuser[i] будет действовать как char указатель), так что теперь вы можете передать его в качестве аргумента strcpy,

Другие вопросы по тегам