Я написал небольшую консольную программу, требующую случайной очистки экрана терминала. Я написал код в/для системы * nix и использовал system("clear")
в этих случаях. Когда мой код был завершен, я просмотрел его, чтобы оценить переносимость моего кода. Вышеупомянутый метод очистки экрана был моей единственной очевидной проблемой переносимости. Я тогда искал другие возможные способы для очистки терминала и нашел документацию на ANSI Cursor Indexing
, а именно:Является ли курсор индексации ANSI переносимым
void cls() {
//27 is ESC ASCII char
printf("%c[2J",27); //clears screen
printf("%c[0;0H",27); //sets cursor at [0,0]
}
К моему удивлению, этот код работал прекрасно на моей системе ничего *. Мне было интересно, переносится ли эта схема индексирования курсора ANSI? ? Будет ли этот код компиляции и вести себя ожидаемо на всех системах со стандартным C компилятором»
Compile на всех да. Ведите себя неожиданно? Зависит от того, что вы ожидаете. На терминалах без ANSI он будет просто печатать буквально, вероятно. Однако это не часть стандарта C. – Flexo