О функции '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
,