C - scanf(hrubé)

Sekcia: Programovanie 11.11.2016 | 11:56
Avatar caopyp   Používateľ

Ahoj potreboval by som poradiť. Nebudem chodiť okolo omáčky. Pracujem v konzole.

Príkaz

scanf("%d",&a);

Po spustení

./program

zadávam vstupne parametre a je potrebujem aby boli hrube

Napríklad

70

Toto zatiaľ mam

A potrebujem

70

Takže nejak obohatiť ten scanf ? Nepýtajte sa ma prečo tam to ma byť :)

Vieš aký je rozdiel medzi konšpiračnou teóriou a realitou? Asi 2 roky
    • RE: C - scanf(hrubé) 11.11.2016 | 12:10
      Avatar Livan Manjaro, Arch, všetko s XFCE  Používateľ

      Tak toto so scanf nijako nesúvisí, pretože scanf iba číta znaky na vstupe. Pokiaľ chceš, aby boli vstupujúce znaky bold (tučným), musíš nejako v konzole zmeniť pred použitím funkcie scanf font na bold a po ukončení to zasa vrátiť naspäť. Ako to urobiť, takto od stola neviem ale skús pohľadať spôsoby manipulácie s fontami v konzole.

    • RE: C - scanf(hrubé) 11.11.2016 | 12:23
      Avatar Dušan_Kreheľ Debian  Používateľ
      • RE: C - scanf(hrubé) 11.11.2016 | 13:05
        Avatar Dušan_Kreheľ Debian  Používateľ
        #include <stdio.h>
        #include <stdlib.h>
        
        int main(void)
        {
        
        	int number;
        	int ret;
        	
        	printf("\033[1m"); /* set on bold */
        	fflush(stdout);
        	
        	ret=scanf("%d", &number);
        	
        	/* back to normal mode */
        	printf("\033[0m");
        	fflush(stdout);
        	
        	if(ret != 1)
        	{
        		fputs("Bad input", stderr);
        		return 1;
        	}
        
        	printf("%d\n", number);
        	return 0;
        }
        
      • RE: C - scanf(hrubé) 11.11.2016 | 13:24
        Avatar Livan Manjaro, Arch, všetko s XFCE  Používateľ

        Tak toto je veľmi dobrý a hlavne užitočný odkaz. Niekedy v minulosti som o escape sekvenciách počul, len akosi som na to pozabudol. Dík za pripomienku.

    • RE: C - scanf(hrubé) 11.11.2016 | 17:59
      Avatar caopyp   Používateľ

      tak to veľmi pekne ďakujem už to len stačí pochopiť. :)

      Vieš aký je rozdiel medzi konšpiračnou teóriou a realitou? Asi 2 roky
      • RE: C - scanf(hrubé) 11.11.2016 | 18:18
        Avatar Livan Manjaro, Arch, všetko s XFCE  Používateľ

        Čo na tom potrebuješ pochopiť?

        táto časť nastavuje pred použitím príkazu scanf pomocou escape sekvencie tučné písmo v konzole

        printf("\033[1m"); /* set on bold */
        	fflush(stdout); 

        tu je použitie samotného príkazu scanf

        ret=scanf("%d", &number);

        a tu je nastavenie písma v konzole na obyčajné pomocou escape príkazu

        printf("\033[0m");
        	fflush(stdout);

        a ten zvyšok kódu sú len kontroly a výpis toho, čo bolo zadané.

    • RE: C - scanf(hrubé) 11.11.2016 | 18:31
      Avatar caopyp   Používateľ

      toto čo som potreboval

      #include <stdio.h>
      #include <stdlib.h>
      
      
      int main() {
      int number;
      int ret;
      
              printf("\033[1m"); /* set on bold */
              ret=scanf("%d", &number);
      
      
      return 0;
      }
      
      
      
      ďakujem toto som si nechal a tomu chápem len nechápem/nepoznám príkaz fflush(stdout);

      Vieš aký je rozdiel medzi konšpiračnou teóriou a realitou? Asi 2 roky
      • RE: C - scanf(hrubé) 11.11.2016 | 18:39
        Avatar Livan Manjaro, Arch, všetko s XFCE  Používateľ

        fflush ti reflešne (znova načíta) terminál, aby sa zmeny prejavili a určite si tam daj príkaz aj na prepnutie do pôvodného stavu, pretože inak bude ten terminál stále písať tučným, aj keď už to nebudeš chcieť. Takže nastaviť tučné, vykonať scanf a zrušiť nastavenie tučného, ten fflush tam potrebuješ obidvakrát.

        • RE: C - scanf(hrubé) 11.11.2016 | 18:50
          Avatar caopyp   Používateľ

          OK, ďakujem

          Vieš aký je rozdiel medzi konšpiračnou teóriou a realitou? Asi 2 roky