fb pixel
გამოიწერე YouTube-ის არხიyoutube logoგამოწერა
val-do.com-ის ლოგო
კურსებიბლოგიხ.დ.კ.წესებიკონტაქტიკონვერტორები

კურსებიბლოგიხ.დ.კ.წესებიკონტაქტიკონვერტორები
შესვლა
  1. მთავარი
  2. კურსები
  3. C პროგრამირების ენის საფუძვლები
  4. C - მონაცემების შეტანა, გამოტანა (I/O)
C - მონაცემების შეტანა, გამოტანა (I/O)

C - მონაცემების შეტანა, გამოტანა (I/O)

იმისთვის, რომ ჩვენი შემდეგი გაკვეთილები მეტად ინტერაქციული იყოს, აუცილებელია ვისწავლოთ თუ როგორ მუშაობს C-ში შეტანის და გამოტანის ფუნქციები (input, output).


გაკვეთილის თემები:

  • printf() ფუნქცია
  • printf() ფორმატის მიმთითებლები
  • გამქცევი სიმბოლოები (escape sequences)
  • scanf() ფუნქცია
  • scanf() ფორმატის მიმთითებლები 

მოცემული გაკვეთილის ფარგლებში გავივლით <stdio.h> ბიბლიოთეკის ორ ფუნქციას, printf() და scanf()

printf() ფუნქცია (ინფორმაციის გამოტანა).

მოცემული ფუნქცია გვეხმარება ინფორმაციის ეკრანზე გამოტანაში, მაგალითისთვის გვინდა დავბეჭდოთ "Hello, world".

#include <stdio.h>

int main() {
    printf("Hello, World!");
    return 0;
}

როგორც ზემოთ მაგალითშია ახსნილი printf() ფუნქციას გადაცემული აქვს ე.წ. string ორმაგი ბრჭყალებით, რის შედეგადაც შეგვიძლია ეკრანზე გამოვიტანოთ ტექსტი "Hello, world!".

იმ შემთხვევაში თუ გვჭირდება ტექსტში რაიმე ცვლადის ჩასმა, printf ფუნქცია გვაძლევს ამის საშუალებასაც, უბრალოდ ამისთვის საჭიროა სპეციალური ე.წ. placeholder-ების გამოყენება, მოციყვანოთ შემდეგი მაგალითი.

#include <stdio.h>

int main() {
    int i, j;
    float x, y;

    i = 10;
    j = 20;
    x = 43.2892f;
    y = 5527.0f;

    printf("i = %d, j = %d, x = %f, y = %f\n", i, j, x, y);
    // დაიბეჭდება: i = 10, j = 20, x = 43.289200, y = 5527.000000
    return 0;
}

თუ ზემოთ მოყვანილ მაგალითს გავარჩევთ დავინახავთ, რომ %d-ის ადგილას ჩაჯდება i ცვლადის მნიშვნელობა, %d-ის ადგილას ჩაჯდება j ცვლადის მნიშვნელობა, %f-ის ადგილას ჩაჯდება x ცვლადის მნიშვნელობა, ხოლო ბოლო %f-ის ადგილას y ცვლადის მნიშვნელობა.

printf() ფუნქციის ლოგიკა მდგომარეობს შემდეგში:

printf(string, expr1, expr2, …);

ფუნქციას პირველ არგუმენტად გადაეცემა string, ხოლო შემდეგ არგუმენტებად გადაეცემა ე.წ. expressions, მაგალითად ცვლადი და ა.შ. იმ შემთხვევაში თუ პირველი არგუმენტში გვსურს ცვლადის ან რაიმე expression-ის დაბეჭვდა ამისთვის არსებობს ე.წ. placeholder-ები რომლებიც იწყება % სიმბოლოთი და მოსდევს d, ან ფორმატის შესაბამისი სიმბოლო, რომელიც წინასწარაა განსაზღვრული.

%d წარმოადგენს ფორმატის მიმთითებელს (format specifier).

როგორც მეორე მაგალითიდან ჩანს, გამოყენებული გვაქვს 2 ტიპის ფორმატის მიმთითებელი, ესენია:

  1. %d - მთელი რიცხვების ფორმატის მიმთითებელი
  2. %f - მოძრავ მძიმიანი რიცხვების ფორმატის მიმთითებელი

printf() ფუნქციაში ფორმატის მიმთითებლები (format specifiers) მუშავდება მარცხნიდან მარჯვნივ, ზუსტად იმ თანმიმდევრობით, როგორც ისინი წერია ტექსტში.

ამავე თანმიმდევრობით printf() იღებს მასთან გადაცემულ მნიშვნელობებს.
ეს ნიშნავს, რომ პირველი ფორმატის მიმთითებელი შეესაბამება პირველ არგუმენტს, მეორე — მეორე არგუმენტს და ასე შემდეგ.

თუ ფორმატის მიმთითებლების რაოდენობა ან მათი რიგი არ ემთხვევა გადაცემულ მნიშვნელობებს, პროგრამა არასწორ შედეგს დაბეჭდავს ან შეიძლება შეცდომაც გამოიწვიოს.

int age = 25;
float height = 1.75;

printf("ასაკი: %d, სიმაღლე: %.2f", age, height);

ამ მაგალითს თუ დავაკვირდებით შეგვხვდება შემდეგი ფორმატის მიმთითებელი %.2f, ეს ნიშნავს რომ მძიმის შემდეგ დაიბეჭდება 2 სიმბოლო ანუ 75

შენიშვნა!!!

იმ შემთხვევაში თუ ფორმატის მიმთითებელი არ დაემთხვევა არგუმენტის ტიპს, ან მდებარეობას (მაგალითად %d float-ისთვის), შესაძლოა შედეგი გაუთვალისწინებელი იყოს, ან კომპილაციისას მივიღოთ შეცდომა, შესაბამისად აუცილებელია ყურადღება.

ფორმატის მიმთითებლების ცხრილი.

C-ში გარდა int da float რიცხვებისა გვაქვს კიდევ მრავალი ფორმატის მიმთითებლები, რომლებიც ქვემოთ ცხრილშია მოცემული თავისი დეტალური აღწერით

ფორმატის მიმთითებელი

მონაცემთა ტიპი

აღწერა

მაგალითი

%d

int

მთელი რიცხვი

25, -10

%i

int

მთელი რიცხვი (იგივე რაც %d)

100

%u

unsigned int

უღნიშნო მთელი რიცხვი

42

%c

char

ერთი სიმბოლო

'A'

%f

float

ათწილადი რიცხვი

3.14

%.2f

float / double

ათწილადი რიცხვი 2 ციფრით მძიმის შემდეგ

3.14

%lf

double

ორმაგი სიზუსტის ათწილადი

3.14159

%s

char[] / string

ტექსტი (სტრიქონი)

"Hello"

%p

pointer

მეხსიერების მისამართი

0x7ffee3a1

%x

int

მთელი რიცხვი თექვსმეტობით სისტემაში

ff

%o

int

მთელი რიცხვი რვაობით სისტემაში

77

%%

—

% სიმბოლოს დაბეჭდვა

%

გამქცევი სიმბოლოები (Escape Sequences)

როგორც ზემოთ ერთ-ერთ მაგალითშია მოყვანილი printf ფუნქციას ასევე აქვს \n სიმბოლოთა თანმიმდევრობა, რომელსაც ეგრედ წოდებული გამქცევი სიმბოლოები ეწოდება, კი ვიცი ქართულად არც ისე ლოგიკურად ჟღერს, მაგრამ ყოველთვის ვცდილობ დამწყებებისთვის გადავთარგმნო.

\n სიმბოლო ნიშნავს ახალ ხაზს, ანუ \n-ს შემდეგ არსებული ტექსტი დაიწყება ახალი ხაზიდან

printf("Hello,\nWorld!");
// დაიბეჭდება:
// Hello,
// World!

C-ში გვაქვს რამდენიმე escape sequences, რომელსაც ქვემოთ ცხრილის სახით გთავაზობთ თავისი აღწერებით.

პრაქტიკისთვის კარგი იქნება თუ თითეულ მათგანს ერთხელ, ან რამდენჯერმე გამოიყენბთ

Escape sequence

განმარტება

\n

ახალი ხაზი

\t

ტაბულაცია

\\

უკუშტრიხი (\)

\"

ბრჭყალი (")

\r

ხაზის დასაწყისში დაბრუნება

\0

სტრიქონის დასასრული

scanf() ფუნქცია (ინფორმაციის შეტანა)

იმისთვის, რომ ჩვენს პროგრამაში ინფორმაცია შევიტანოთ, გვჭირდება scanf() ფუნქცია, რომლის დახმარებითაც შევძლებთ ჩვენი პორგრამა მეტად ინტერაქციული გავხადოთ.

scanf() ფუნქციას გადაეცემა 2 არგუმენტი, პირველი არგუმენტია ე.წ. ფორმატის მიმთითებელი(ები), ხოლო მეორე ე.წ. reference ოპერატორი.

#include <stdio.h>

int main() {
    int age;

    printf("შეიყვანეთ თქვენი ასაკი: ");
    scanf("%d", &age);

    printf("თქვენი ასაკი არის: %d\n", age);

    return 0;
}

გავარჩიოთ არსებული მაგალითი, scanf("%d", &age); %d წარმოადგენს int რიცხვის ფორმატის მიმთითებელს (placeholder-ს), ხოლო &age წარმოადგენს ე.წ. reference-ს.

აუცილებელია გავითვალისწინოთ, რომ ფორმატის მიმთითებლის ტიპი უნდა ემთხვეოდეს შეყვანილი ინფორმაციის ტიპს, ანუ age უნდა იყოს მთელი რიცხვი და არა ათწილადი ან სიმბოლო.

რაც შეეხება & სიმბოლოს, მას აუცილებლად გავივლით მომავალ გაკვეთილში pointer-ების შესახებ.

ასევე შეგვიძლია, scanf() ფუნქციას გადავცეთ მრავალი არგუმენტი. 

#include <stdio.h>

int main() {
    int x, y;
    printf("შეიყვანეთ ორი მთელი რიცხვი: ");
    scanf("%d %d", &x, &y);

    printf("თქვენ შეიყვანეთ: x = %d, y = %d\n", x, y);
    return 0;
}

ფორმატის მიმთითებლები printf()-სგან განსხვავებით სხვანაირად მუშაობს scanf() ფუნქციაში, რომელის ცხრილსაც გთავაზობთ ქვემოთ

ფორმატის მიმთითებელი

ტიპი

%d

int

%i

int (base ავტომატურად)

%u

unsigned int

%o

unsigned int (octal)

%x

unsigned int (hex, lowercase)

%X

unsigned int (hex, uppercase)

%hd

short

%hu

unsigned short

%ld

long

%lu

unsigned long

%lld

long long

%llu

unsigned long long

%f

float

%lf

double

%Lf

long double

%e

float (scientific)

%le

double

%g

float (shortest form)

%lg

double

 


დამატებითი რესურსები

  • Telegram
  • Discord

სხვა კატეგორიები

შეისწავლეთ ვებდეველოპმენტის ენები სრულიად უფასოდ, ისეთები როგორებიცაა Javascript, HTML, CSS და კიდევ სხვა მრავალი ენა

HTML, CSS-ის სა...

HTML, CSS-ის საწყისი კურსი, დამწყებთათვის (deprecated - მოძველებული)

ჯავასკრიპტის კუ...

ჯავასკრიპტის კურსი

JavaScript-ის D...

JavaScript-ის DOM-ის კურსი

TypeScript-ის კ...

TypeScript-ის კურსი

Angular-ის კურს...

Angular-ის კურსი

HTML, CSS-ის კუ...

HTML, CSS-ის კურსი

Reactjs-ის კურს...

Reactjs-ის კურსი დამწყებთათვის

ალგორითმები...

ალგორითმები

Node.js-ის კურს...

Node.js-ის კურსი

Dart-ის კურსი...

Dart-ის კურსი

C პროგრამირების...

C პროგრამირების ენის საფუძვლები

ბოლოს დაწერილი ბლოგები პროგრამირებაზე

ქვემოთ მოცემულია უახლესი 3 ბლოგი პროგრამირების თემატიკასთან დაკავშირებით

როგორ ინახება ი...

როგორ ინახება ინფორმაცია. რა არის Bit და Byte?

რატომ არის კომფ...

რატომ არის კომფორტული სამუშაო ოთახი აუცილებელი კოდის წერისა და პროდუქტიული მუშაობისთვის?

რატომ ვერ პოულო...

რატომ ვერ პოულობენ ჯუნიორები სამსახურს?

  • C - შესავალი, გარემოს მომზადება
  • C - პირველი პროგრამა
  • C - კომენტარები
  • C - ცვლადები
  • C - მონაცემების შეტანა, გამოტანა (I/O)
  • C - მასივები
პროგრამირების კურსები
HTML, CSSJavaScriptTypeScriptAngularReactJSNodeJSC
გამომყევი
InstagramFacebookLinkedinTelegramDiscordYoutubeGithub

© val-do.com 2026 წელი - ყველა უფლება დაცულია

ვერსია 0.1.52