Я делаю программу палача на c, используя широкие символы В нем должны быть разрешены пробелы в словах (которые программа обнаружит как недопустимый символ).
Важная часть кода:
int main(int argc, char** argv) {
setlocale(LC_ALL, "");
wchar_t sentence[30];
printf("Gimme a sentence:\n");
wscanf(L"%[^\n]", sentence); //Reading the line
wprintf(L"Your sentence: %ls\n", sentence); //Printing the whole line
printf("Detecting non-alphabetic wide characters"); //Detecting non-alphabetic characters
for (int i = 0; i < wcslen(sentence); i++) {
if (iswalpha(sentence[i]) == 0) {
wprintf(L"\n\"%lc\" %i\n", sentence[i], i);
printf("An illegal character has been detected here");
return (1);
}
}
return (0);
}
И тестирование:
Gimme a sentence:
hello world
Your sentence: hello world
Detecting non-alphabetic wide characters
"o " 2
An illegal character has been detected here
Я также подозреваю, что iswalpha () тоже портит, но когда я изменяю "% [^ \ n]" на "% ls", хотя он не принимает пробелы, которые я хочу, чтобы программа принимала их. Есть ли способ для него принять пробелы и , также не входной мусор?