Используя C в Linux, как я могу удалить символ €
(или любой другой «конкретный» не ASCII-символ, переданный в качестве параметра функции -) из строки?
Я пробовал с:
void remove_all_chars(char* str, char c) {
char *pr = str, *pw = str;
while (*pr) {
*pw = *pr++;
pw += (*pw != c);
}
*pw = '\0';
}
но я получаю:
:warning: многосимвольная символьная константа.
Должен ли я конвертировать перед строкой в широкий символ что-то вроде
wchar_t wsAux[100];
remove_all_chars(wsAux, "A€bcd", 100);
но это не работает.
\x80
в Windows-1252,\xe2\x82\xac
в UTF-8,\x20\xac
в UCS2/UTF-16 или\x00\x00\x20\xac
в UCS4/UTF-32. - person Phylogenesis   schedule 25.03.2014void remove_all_nonASCII(char* str) { char *pr = str, *pw = str; while (*pr) { *pw = *pr++; pw += ((*pw & ~7F) == 0); } *pw = '\0'; }
- person chux - Reinstate Monica   schedule 25.03.2014€
поместится вchar
. - person David Leonard   schedule 25.03.2014remove_all_chars()
. Сообщение показало сообщение компилятора, хотя и не указало, какая именно строка его вызвала. Пожалуйста, опубликуйте точный код. Было ли это так:char s[] = "A€bcd"; remove_all_chars(s, '€');
? - person chux - Reinstate Monica   schedule 26.03.2014