LINUX.ORG.RU

Самый простой код

 


3

4

Снежинка в терминале. 1 штука.

#include <stdio.h>
#include <stdlib.h>
//Снежинка в консоли
void main ()
{
    system("clear");    
    system("sleep 1");
    printf("❄\n");
    system("sleep 2");
    system("clear"); 
    printf("\n\n\n ❄\n");
    system("sleep 2");
    system("clear"); 
    printf("\n\n\n\n❄ \n");
    system("sleep 2");
    system("clear"); 
    printf("\n\n\n\n\n\n ❄ \n");
}




Последнее исправление: AnonymUser (всего исправлений: 1)

А я баг нашëл. Параметры командной строки не обрабатываются. А самый простой код – это вот это:

#include <stdio.h>

void main(void) {
  printf("Hello word!\n");
}
yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)

Попробуй не использовать \n, а вместо него \r, тогда снежинка будет перемещаться

anonymous
()
Ответ на: комментарий от unDEFER

А до циклов вы ещё не дошли?

Можно посмотреть на это с обратной стороны. Возможно, они уже дошли до раскрутки циклов.

kaldeon ★★
()
Ответ на: комментарий от bigbit

Ну так как раз актуально значит. Жарко, сидишь потеешь, а тут терминал открыл, а там снежинка — и сразу как бы прохладнее становится (на самом деле это нифига не работает, но попробовать можно :D)

CrX ★★★★★
()

С таким количеством вызовов system почему бы сразу не сделать на шелле?

snowflake()
{
    local i t=0
    for i in '' '❄\n' '\n\n\n ❄\n' '\n\n\n\n❄ \n' '\n\n\n\n\n\n ❄ \n';
    do
        sleep "$t"
        let 't<2&&++t'
        clear
        printf "$i"
    done
}

legolegs ★★★★★
()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от legolegs

Круто. Плюсую.

Мой ход! Снежинка на циклах. Прямолинейная, как кирпич. Снежинка после армии, так сказать :)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Снежинка в консоли
int main ()
{
int a;
int i;

 for (a=0; a < 15; a++) {
	     system("sleep 1");
	     system("clear");

	  for (i=0; i < a; i++) {
      printf("\n");
	 }

   printf("\n\n❄\n\n");
  }
}
AnonymUser
() автор топика
Ответ на: комментарий от legolegs

И почти нормальная снежинка:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Снежинка в консоли
int main ()
{
int a;
int i;

 for (a=0; a < 15; a++) {
	     system("sleep 1");
	     system("clear");

	  for (i=0; i < a; i++) {
      printf("\n");
	 }
if((a % 2) == 0) {
   printf("\n\n  ❄\n\n");
}
else {
	   printf("\n\n❄  \n\n");
	}
  }
  return 0;
}
AnonymUser
() автор топика
Ответ на: комментарий от AnonymUser

Скобок-то сколько наколбасил :)

Упростил

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Снежинка в консоли
int main ()
{
    int a = 0;

     while(a++ < 15) {
       system("sleep 1");
       system("clear");

       for (int i = 0; i < a; i++)
         printf("\n");

       printf((a % 2) ? "\n\n❄  \n\n"
                      :"\n\n  ❄\n\n");
    }
  return 0;
}
SkyMaverick ★★★★★
()
Последнее исправление: SkyMaverick (всего исправлений: 1)
Ответ на: комментарий от Bfgeshka

У меня когда-то снежинки по всему экрану были :)

// Интересно, а щас компиз так может?

Zhbert ★★★★★
()

А помнит кто-нибудь текст «Hello, world!», в котором последовательно объясняется, как уменьшить двоичный код программы с примерно в 200KB до пары сотен байт? На ассемблере, естественно.

Наслаждайтесь:

https://blog.lohr.dev/smol-hello-world
VIT ★★
()
Ответ на: комментарий от yars068

Правильно, но тот же стадарт С99 определяет EXIT_SUCCESS как 0 и EXIT_FAILURE как не 0. Поскольку отсутствие исполняемых опреаторов не может FAIL, а SUCCESS всегда 0, то моё первоначальное предложение остаётся в силе.

Впрочем и void main() не является FAIL, а является Undefined behavior. Так что так тоже можно :), но лучне не надо.

VIT ★★
()

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

//Снежинка в консоли

int main (int argc, char *argv[])

{

system("clear");	

system("sleep 1");

printf("\n");

system("sleep 2");

system("clear"); 

printf("\n\n\n \n");

system("sleep 2");

system("clear"); 

printf("\n\n\n\n \n");

system("sleep 2");

system("clear"); 

printf("\n\n\n\n\n\n  \n");

}

мой вариант без вызова системых команд

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void clear_screen() {
    printf("\033[2J\033[H");
    fflush(stdout);
}


int main (int argc, char *argv[])
{
    clear_screen();
    sleep(1);
    printf("*\n");
    sleep(2);
    clear_screen();
    printf("\n\n\n *\n");
    sleep(2);
    clear_screen();
    printf("\n\n\n\n* \n");
    sleep(2);
    clear_screen();
    printf("\n\n\n\n\n\n * \n");

    return 0;
}

enep ★★★★★
()

Ого! Сколько комментариев! В запасе ещё тема горения огня в консоли на C.

(На JS реализована, сразу говорю)

AnonymUser
() автор топика
Ответ на: комментарий от hobbit

Там все основные пляски вокруг системных вызовов Линукс и формата эльф, поэтому от ISA не зависят.

VIT ★★
()
Ответ на: комментарий от algo

Это ***, а не ❄

  1. это код
  2. стандарты C, необуславивает такое вид unicoda. Тогда надо ставить вопрос так

Это *** "а не «\xE2\x9D\x84\n»


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void clear_screen() {
    printf("\033[2J\033[H");
    fflush(stdout);
}


int main (int argc, char *argv[])
{
    clear_screen();
    sleep(1);
    printf("\xE2\x9D\x84\n");
    sleep(2);
    clear_screen();
    printf("\n\n\n \xE2\x9D\x84\n");
    sleep(2);
    clear_screen();
    printf("\n\n\n\n\xE2\x9D\x84 \n");
    sleep(2);
    clear_screen();
    printf("\n\n\n\n\n\n \xE2\x9D\x84 \n");

    return 0;
}
enep ★★★★★
()
Последнее исправление: enep (всего исправлений: 1)
Ответ на: комментарий от VIT

где return 0 ?

5.1.2.2.3 Program termination

If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument; reaching the } that terminates the main function returns a value of 0.

algo
()
Над компом пролетает снежинка
Как огромный седой вертолет.
На щеке расчирикалась жилка,
Все проходит - и это пройдет!
...
Ты почему гитару бросил?!
olelookoe ★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария