Функция tolower
возвращает целое число, и вы ошибочно набрасываете его на char *
.
Лучший способ сделать это, чтобы скопировать буквенно-цифровые символы из исходного массива в массив назначения
char myline[] = " 50 Some Text Here "; // put the [] after the variable.
char *mystr = malloc(128);
char *tmp = myline;
char *destPtr = mystr;
while (*tmp != '\0'){
if (isalnum(*tmp)) {
*destPtr++ = *tmp;
}
tmp++;
}
*destPtr = 0; // terminating nul character.
Если вы действительно хотите использовать strcpy
, вам необходимо инициализировать строку назначения в пустую строку и сделайте символ скопированным частью массива символов и добавьте этот массив в строку назначения:
char myline[] = " 50 Some Text Here "; // put the [] after the variable.
char *mystr = malloc(128);
char *tmp = myline;
mystr[0] = 0; // initialize the destination string.
while (*tmp != '\0'){
char str[2] = {0}; // temp string of size 2.
if (isalnum(*tmp))
str[0] = tolower(*tmp); // put the char to be copied into str.
strcat(mystr,str); // append.
tmp++;
}
Какой выход/ошибка вы получаете? –
Не отбрасывайте возвращаемое значение из 'malloc()'. http://c-faq.com/malloc/mallocnocast.html – Tim