\ n"); în timp ce ((c = getchar ())! = eof) putchar (c); Am intrat în caracterul din partea antetului. deoarece c = getchar ()) -" />

Program pentru copierea unui fișier de caractere

printf ("Efectuați intrarea> \ n"); în timp ce ((c = getchar ())! = eof) putchar (c);

Am intrat în caracterul din partea antetului. deoarece c = getchar ()) este o expresie de același tip ca și c. Instrucțiunea în timp funcționează în general în acest fel: mai întâi calculează expresia care se află în partea antetului, în timp ce tastați un caracter de la tastatură, ceea ce este ceea ce avem nevoie. Instrucțiunea atunci verifică dacă caracterele introduse sunt semnul sfârșitului fișierului. Întrucât, spre deosebire de versiunea anterioară, instrucțiunea corpului de timp constă dintr-un singur operator putchar (c). atunci arcușurile curbate pot fi omise. După rularea lui putchar (c). controlul va fi trecut în partea antet a instrucțiunii. unde calculul expresiei va începe din nou, ceea ce la rândul său va necesita introducerea unui simbol din tastatură și așa mai departe.







Numărarea caracterelor într-un fișier. Opțiunea 1

Să scriem un program în care fișierul va fi introdus de la tastatură. Tipul programului este prezentat în lista 2.3.

printf ("Efectuați intrarea> \ n"); în timp ce (getchar ()! = eof) nc ++;

printf ("Numărul caracterelor este:% ld \ n", nc); _getch ();

Aici întâlnim un nou tip de date: lungul este un număr întreg lung. Acest tip (puteți utiliza, de asemenea, lung int) este folosit pentru a descrie numere mari semnate. Prin memorie, acest tip de variabilă este mai mare sau egal cu int. Variabilele de tip lung pot fi declarate lungi sau nesemnate lungi. În primul caz, variabila va avea un semn, în al doilea - semnul va fi suprimat. Acest lucru înseamnă că, în ambele cazuri, că bitul de semn al unui calificativ nesemnate vor fi tratate de către compilator ca date de descărcare de gestiune normală, adică. E. va lua parte la operațiuni, împreună cu alți biți de date.

semnat lung este un sinonim pentru lung. Există, de asemenea, un tip de date lung și lung. O variabilă de acest tip preia mai multă memorie decât o lungă nesemnată. Variabilele de tip long long pot fi semnate sau nesemnate. În consecință, ei declară

Ele sunt semnate ca lungi și nesemnate lungi. semnat lung lung este un sinonim pentru mult timp.

Din moment ce contoriza numărul de caractere într-un fișier (în general) nu poate fi „tastatura“, ar trebui să fie pregătit pentru faptul că aceasta va fi o mulțime de caracter, iar numărul acestora depășește valoarea admisibilă, este plasat într-o variabilă de tip int. Numărul de caractere de intrare este luată în calcul într-o variabilă nc de tip lung în conformitate cu regula au intrat un caracter - valoarea nc este incrementat, au intrat într-una - nc din nou incrementat, etc. La începutul fiecărei valori de execuție de program nc este adus la zero ...







Apoi vi se cere să introduceți caractere (textul este afișat pe ecran). Apoi, din nou, cu ajutorul bucla în timp, caracterele sunt introduse până la apăsarea combinației de taste +. Rețineți că, în timp ce corpul operatorului (ca în exemplul anterior) conține doar o singură expresie, astfel încât bretele care limitează corpul operatorului este de prisos. Deoarece corpul operatorului este funcția getchar (). atunci când instrucțiunea de început începe să evalueze expresia, va trebui să tastați un caracter de la tastatură. După ce vom introduce simbolul, getchar () valoare va fi egală cu caracterul introdus codul: funcția va întotdeauna codul de caracter pe care le apăsați pe tastatură. Prin urmare, nu este necesar să se atribuie valoarea getchar () la orice variabilă,

Program pentru copierea unui fișier de caractere

44 Partea I. Învățarea limbajului C / C ++

Nu avem nevoie de un caracter nou în algoritmul nostru - valoarea getchar () este imediat comparată cu sfârșitul fișierului. Dacă această caracteristică nu este deja introdusă (nu am apăsat o combinație de taste +), atunci nu este încălcată condiția instrucțiunii while, și instrucțiunea corpului de timp. constând dintr-un singur operator nc ++. începe să fie executat din nou.

Noul operator nc ++ este echivalent cu expresia nc = nc + 1 (adică unul este adăugat la valoarea lui nc). Apropo, puteți scrie ++ nc în acest caz. în timp ce operația ++ nu participă la o expresie de tip int x = nc ++ sau int x = ++ nc. nu contează. În cele din urmă cazuri, poziția simbolurilor ++ este semnificativă: dacă sunt înaintea nc. atunci operația este efectuată mai întâi și rezultatul este atribuit variabilei x. Dacă sunt după nc. atunci conținutul nc este atribuit mai întâi variabilei x. și apoi se schimbă cu una. Această operație este legată de intervenția chirurgicală. care se comporta ca ++. dar nu adaugă, ci scade unul.

În funcția printf (), vom vedea din nou noul format:% ld. Acest format afișează numerele de tip lungi.

Rezultatul programului este prezentat în Fig. 2.2. Rețineți că simbolul combinației de taste participă, de asemenea, la numărarea simbolurilor +, și un caracter care este introdus ca semn al sfârșitului intrării. Prin urmare, rezultatul - numărul de caractere introduse - va fi încă unul, ceea ce este evident din figură. Pentru a preveni acest lucru, în program înainte de finalizarea lui din nc ar fi necesar să se ia unitatea, dar atunci nu ar fi evident pentru cel care învață.

Fig. 2.2. Rezultatul activității programului din lista 2.3

Numărarea caracterelor într-un fișier. Opțiunea 2

Să schimbăm un program anterior, aplicând un nou operator și o nouă operațiune (a se vedea sub text). Programul va arăta așa cum se arată în Lista 2.4.







Trimiteți-le prietenilor: