Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incarcator diy China

Unde au disparut tancurile federa...

RMN Decontat

Jgheab clasic forma "U"- ...
 Reparatie plafoniera LED

Problema PC - se blocheaza sau re...

Notebook HP 840G2 - Upgrade RAM, ...

Defect ciudat Videorecorder Panas...
 lege de reglementare a shrinkflat...

Care este cota parte la succesiun...

Camera auto DVR PNI Voyager S2600...

Cartelul din Carpati - mafia PNL ...
 Trecut: Europa versus S.U.A. la c...

Garantie apartament dezvoltator

Aplicație GPS cu zoom automa...

Ipad Pro & Air 2024
 

Este kernel-ul "encoding agnostic"?

- - - - -
  • Please log in to reply
39 replies to this topic

#19
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,258
  • Înscris: 24.02.2007
fread si vezi exact ce ai.
Daca rulezi programul din consola, vei avea ce doreste consola sa ai (cmd.exe). Ea preia datele de la tastatura si ti le scrie tie (console aplication) in stdin.
Daca faci redirect la input dintr-un fisier, va fi ca si cum ai citi din acel fisier.
Daca un alt program iti face redirect la input cand iti porneste aplicatia, vei avea ce iti trimite acel program.

#20
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,632
  • Înscris: 30.07.2003

 psycho22, on 09 iunie 2014 - 10:56, said:

Deci in stdin am valorile astea http://msdn.microsof...6(v=vs.85).aspx si nu caractere encodate?
Daca vrei sa intelegi detalii despre mesajele si programarea Windows va trebui sa inveti asa ceva.
Consola e o astfel de aplicatie (nimic magic) : http://msdn.microsof...0(v=vs.85).aspx
Legat de "caractere encodate", ele sunt o insiruire de octeti.
Avem tipul wchar_t unde sizeof() are valoarea/lungimea 2, tu in mod normal ii dai un caracter/o reprezentare (in Unicode sa zicem) dar daca am codul de mai jos intelegi ce am facut ?
wchar_t c;
...
c = 'x';
...
((char*) &c)[0] = 0xFF;
((char*) &c)[1] = 0x00;


Edited by neagu_laurentiu, 09 June 2014 - 12:26.


#21
psycho22

psycho22

    Member

  • Grup: Members
  • Posts: 334
  • Înscris: 11.02.2014

 neagu_laurentiu, on 09 iunie 2014 - 12:19, said:

Daca vrei sa intelegi detalii despre mesajele si programarea Windows va trebui sa inveti asa ceva.
Consola e o astfel de aplicatie (nimic magic) : http://msdn.microsof...0(v=vs.85).aspx
Legat de "caractere encodate", ele sunt o insiruire de octeti.
Avem tipul wchar_t unde sizeof() are valoarea/lungimea 2, tu in mod normal ii dai un caracter/o reprezentare (in Unicode sa zicem) dar daca am codul de mai jos intelegi ce am facut ?
wchar_t c;
...
c = 'x';
...
((char*) &c)[0] = 0xFF;
((char*) &c)[1] = 0x00;

Primul byte a lui "c" ia valoarea 255, iar cel de-al doilea ia valoarea 0. Deci am 11111111 00000000. Dar nu m-am prins ce ai vrut sa imi explici prin acest cod. Posted Image

Edited by psycho22, 09 June 2014 - 12:42.


#22
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,632
  • Înscris: 30.07.2003
Eu am inteles ca tu privesti 1 caracter = 1 byte

#23
psycho22

psycho22

    Member

  • Grup: Members
  • Posts: 334
  • Înscris: 11.02.2014

 neagu_laurentiu, on 09 iunie 2014 - 13:11, said:

Eu am inteles ca tu privesti 1 caracter = 1 byte
Nu, stiu ca sunt multe encoding-uri (UTF-8, UTF-16, Latin-1, etc), iar la unele caracterul ocupa mai mult de 1 byte.


Acum cred ca am inteles: stdin e un fisier care este legat la console input, un program care converteste semanele de la taste in ceva encodat. Acest fisier pot sa-l leg oricand la alt program sau la alt fisier. Deci poate contine si valorile fizice ale tastelor, si valori Ascii, si orice. Dar el, in mod normal e legat la console input. Deci in mod normal acolo se afla caractere encodate.

Stdout, la fel. Un simplu fisier care e legat la alt program, console output. Programul asta se asteapta sa primeasca caractere, deci trebuie sa-i dai caractere. Daca fisierul stdout e legat la altceva, atunci trebuie sa ii dai ce asteapta sa primeasca acel ceva.

Am inteles bine?

Edited by psycho22, 09 June 2014 - 13:32.


#24
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,632
  • Înscris: 30.07.2003
E un stream. In acest concept intra si fisierul care de regula e localizat pe hdd.
http://en.wikipedia....tandard_streams

Edited by neagu_laurentiu, 09 June 2014 - 14:04.


#25
psycho22

psycho22

    Member

  • Grup: Members
  • Posts: 334
  • Înscris: 11.02.2014
"The low-level console I/O functions enable applications to receive detailed input about keyboard and mouse events, as well as events involving user interactions with the console window."

Imi puteti da un exemplu de astfel de functie?

#26
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,632
  • Înscris: 30.07.2003
http://www.ctyme.com/intr/int-33.htm
Si gasesti detalii pe aici: http://www.ctyme.com/rbrown.htm

In Windows ai functiile de aici: http://msdn.microsof...3(v=vs.85).aspx
iar impreuna cu tehnicile de programare din WinAPI faci ce vrei.

Edited by neagu_laurentiu, 09 June 2014 - 15:14.


#27
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,258
  • Înscris: 24.02.2007
Citatul e din pagina MSDN despre consolele Windows, iar tot acolo ai si diverse exemple: http://msdn.microsof...1(v=vs.85).aspx

#28
psycho22

psycho22

    Member

  • Grup: Members
  • Posts: 334
  • Înscris: 11.02.2014
Acele functii "read" si "write" sunt doar pe unix? Echivalentul pe windows e "ReadConsole" si "WriteConsole"?

#29
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,632
  • Înscris: 30.07.2003
Sunt si in Windows: http://msdn.microsof...y/634ca0c2.aspx
Doar ca acele din capitolul despre consola sunt functii API ale sistemului. Cele din CRT fac apel la WinAPI. Daca te gandesti la un alt limbaj cu alte biblioteci/framework-uri atunci si acestea au propriile metode conform stilului introdus dar pana la urma toate fac apel (direct sau indirect) la functiile sistemului de operare. Nici un limbaj cu tehnologiile adiacente nu scoate din palarie rezolvari de situatii in lucrul cu hardware-ul fara a face apel la sistemul de operare (nu vorbesc de cazul cand chiar scrii dedicat pe o arhitectura fara a fi dependent de un OS).

Edited by neagu_laurentiu, 09 June 2014 - 16:18.


#30
psycho22

psycho22

    Member

  • Grup: Members
  • Posts: 334
  • Înscris: 11.02.2014
Deci ReadConsole e apelata de read? Ma asteptam sa fie invers.

#31
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,632
  • Înscris: 30.07.2003
read() e mai generica, are in spate ReadFile, cea pentru consola actioneaza pe specificul sau.
Pana la urma libC (asa cum e cunoscuta biblioteca in Unix-like) sau C Run-Time (in Windows) e o colectie de rutine (C standard library) peste sistemul de operare.
In Visual Studio ai codul functiei read() la vedere precum si a tuturor celor din CRT. Dar din WinAPI nu Posted Image

Edited by neagu_laurentiu, 09 June 2014 - 16:41.


#32
psycho22

psycho22

    Member

  • Grup: Members
  • Posts: 334
  • Înscris: 11.02.2014

 neagu_laurentiu, on 09 iunie 2014 - 16:29, said:

read() e mai generica, are in spate ReadFile, cea pentru consola actioneaza pe specificul sau.
Pana la urma libC (asa cum e cunoscuta biblioteca in Unix-like) sau C Run-Time (in Windows) e o colectie de rutine (C standard library) peste sistemul de operare.
In Visual Studio ai codul functiei read() la vedere precum si a tuturor celor din CRT. Dar din WinAPI nu Posted Image
Scanf de ce se foloseste de read si nu se foloseste de ReadConsole?

#33
jadnycky

jadnycky

    Active Member

  • Grup: Members
  • Posts: 1,458
  • Înscris: 27.11.2010
Eu cred ca depinde de OS. In Windows n-ai direct acces la o librarie C, trebuie sa o instalezi, pt ca Windows permite accesul la serviciile sistemului printr-o interfata independenta de limbaj. Eu personal cred ca o folosesc pt a ascunde ce limbaj au folosit la scrierea Windows.
In sistemele Unix-like gen Linux, functiile clasice din libraria C se folosesc doar unele pe altele. O aplicatie grafica acolo trebuie sa comunice prin aceste functii, sau prin apelul de sistem socket.

Scanf foloseste read pt ca read este un apel de sistem.

#34
psycho22

psycho22

    Member

  • Grup: Members
  • Posts: 334
  • Înscris: 11.02.2014

 jadnycky, on 09 iunie 2014 - 16:55, said:


Scanf foloseste read pt ca read este un apel de sistem.
Si ReadConsole ce este?

#35
jadnycky

jadnycky

    Active Member

  • Grup: Members
  • Posts: 1,458
  • Înscris: 27.11.2010
ReadConsole e functie ce nu e in libraria C standard. Deci n-ar avea sens sa foloseasca o functie de nivel jos una de nivel inalt.

#36
psycho22

psycho22

    Member

  • Grup: Members
  • Posts: 334
  • Înscris: 11.02.2014
Dar cred ca m-am prins: scanf se foloseste de read pentru ca read e tot din biblioteca standard, adica functie portabila, pe cand ReadConsole e specifica windows. Dard in cazul citirii stdin cele 2 functii (read si ReadConsole) duc la acelasi rezultat.

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate