Тәттібеков Қ. С. Раимбаева С.Ә. С/С++ тілінде программалау негіздері



Pdf көрінісі
бет58/79
Дата15.11.2023
өлшемі1,39 Mb.
#124059
түріПрограмма
1   ...   54   55   56   57   58   59   60   61   ...   79
int atoi(const char *str)
; функциясы 
қолданылады, ол сәтті аяқталған жағдайда str жолы түрлендірілген бүтін 
санды, кері жағдайда 0 қайтарады.
Мысалы,
int n; har *str = “-123”;
n = atoi ( str ); 
// n = -123 
Жолды ұзын бүтін санға түрлендіру үшін 
long int atol( const char *str)

функциясы қолданылады, ол сәтті аяқталған жағдайда str жолы 
түрлендірілген бүтін санды, кері жағдайда - 0 қайтарады.
Мысалы,
long int n;
char *str = “-123”;
n = atol ( str ); 
// n = -123
Жолды double типті санға түрлендіру үшін 
double atof(const char *str)

функциясы қолданылады, ол сәтті аяқталған жағдайда str жолы 
түрлендірілген double типті жылжымалы санды қайтарады, кері жағдайда - 0.


86 
Мысалы, 
double n;
char *str = “-123.321”;
n = atof ( str );
// n = -123.321
Келесі функциялар atoi, atol, atof функцияларына ұқсас іс-әрекеттерді 
орындайды, бірақ көптеген қосымша мүмкіндіктерді ұсынады. 
long int strtol( const char *str, char **endptr, int base) функциясы str жолын 
long int типті санға түрлендіреді және оны қайтарады. Бұл функция 
параметрлерінің келесідей қызметі бар. Егер base аргументі 0-ге тең болса, 
онда түрлендіру str жолының алғашқы екі символына тәуелді болады:

егер алғашқы символ – 1-ден 9-ға дейінгі цифра болса, онда ол сан ондық 
санау жүйесінде ұсынылған деп есептеледі; 

егер алғашқы символ –0 цифры, ал екіншісі – 1-ден 7 дейінгі цифра болса, 
онда ол сан сегіздік санау жүйесінде ұсынылған деп есептеледі; 

егер алғашқы символ 0, ал екіншісі – ‘Х’ немесе ‘х’, онда ол сан он 
алтылық санау жүйесінде ұсынылған деп есептеледі; 
Егер base аргументі 2-ден 36-ға дейінгі санға тең болса, онда бұл мән 
санау жүйесінің негізі ретінде қабылданады және осы жүйе шеңберінен 
шығатын кез келген символ түрлендіруді тоқтатады. Негізі 11-ден 36 
болатын санау жүйелерінде цифраларды белгілеу үшін ‘A’-дан ‘Z’-ке немесе 
‘a’-дан ‘z’-ке дейінгі символдар қолданылады. 
endptr аргументінің мәні strtol функциясымен қойылады. Бұл мәнде 
символға көрсеткіш болады, ол str жолының түрлендірілуін тоқтатады. Ол 
сәтті аяқталған жағдайда strtol функциясы түрлендірілген санды, кері 
жағдайда – 0-ді қайтарады. 
Мысалы, 
int main() { 
long int n;
char*p;
n = strtol(“12a”, &p, 0);
printf(“n = %ld, %stop = %c, n, *p ); // n = 12, stop = a
n = strtol(“012b”, &p, 0); 
printf(“n = %ld, %stop = %c, n, *p ); // n = 10, stop = b 
n = strtol(“0x12z”, &p, 0);
printf(“ n = %ld, %stop = %c, n, *p ); // n = 18, stop = z
n = strtol(“01117”, &p, 0);
printf(“ n = %ld, %stop = %c, n, *p ); // n = 7, stop = 7
return 1; 

unsigned long int strtol(const char *str, char **endptr, int base); функциясы 
strtol функциясына ұқсас жұмыс істейді, бірақ санның символдық көрсетілуін 
unsigned long int типті санға түрлендіреді.


87 
double strtod(const char *str, char **endptr); функциясы санның 
символдық көрсетілуін double типті санға түрлендіреді. Жоғарыда 
көрсетілген барлық функциялар қарастырылатын санның форматына сәйкес 
келмейтін алғашқы символды кездестіргенде жұмысын тоқтатады.
Сонымен қатар егер санның символдық мәні сәйкесінше мәліметтер 
типінің мүмкін мәндер аралығынан асатын болса, онда atof, strtol, strtoul, 
strtod функциялары ERANGE-та errno айнымалысының мәнін қояды. errno 
айнымалысы мен ERANGE тұрақтысы math.h тақырыптық файлында 
анықталған. Мұнда atof және strtod функциялары HUGE_VAL мәнін, strtol 
функциясы LONG_MAX немесе LONG_MIN мәнін, ал strtoul функциясы - 
ULONG_MAX мәнін қайтарады. 
Сандық мәліметтерді символдық мәліметтерге түлендіру үшін itoa, ltoa, 
utoa, ecvt, fcvt және gcvt стандартты емес функциялары қолданылады. Бірақ 
бұл мақсатта sprintf стандартты функциясын қолданған жөн.
Алгоритм идеясы жолдың басынан және соңынан бірдей арақашықтықта 
орналасқан символдарды ауыстырудан тұрады. Жолдың элементтерін оның 
ортасына дейін қарап шығу. Осындай ұқсас программаларды құрастырғанда, 
жолдың бірінші символының индексі – 0, ал соңғысының индексі жолдың 
ұзындығынан бірге кем болатынын ұмытпау керек.
Си тілінің кітапханасында символдық мәліметтерді енгізу және 
шығарудың келесі функциялары анықталған: 
int getchar(void) – кірме ағымнан бір символдан енгізу жүзеге 
асырылады, мұнда ол бір байт ақпаратты (символ) int типті мән ретінде 
қайтарады. Бұл оқыған кезде файл соңына жеткенде жағдайды танып білу 
үшін жасалған.
int putchar (int c) – стандартты шығу ағымына с символын қояды.
char* gets(char*s) - ‘\n’ символы пайда болғанша стандартты ағымнан s 
жолын оқиды, ‘\n’ символдың өзі жолға қойылмайды. 
int puts(const char* s) ‘\n’ символын жол соңына қосу арқылы 
стандартты ағымға жол қосады, дұрыс аяқталған жағдайда 0-ге тең немесе 
нольден үлкен мәндерін қайтарады және қате болғанда теріс мән шығарады 
(EOF=-1). 
Мысалдар: 
char s[20]; 
cin>>s; //стандартты ағымнан жолды енгізу 
cout<Программаның жұмыс нәтижесі: 
“123 456 789” жолын енгізгенде, байттарды оқу бірінші бос орынға дейін 
жүзеге асырылады, яғни s жолға “123/0” жолының тек қана бірінші сөзі 
кіреді, демек 123 саны шығарылады. 
char s[20]; 
gets(s); //стандартты ағымнан жолды енгізу 
puts(s); //стандартты ағымнан жолды шығару 


88 
Программаның жұмыс нәтижесі: 
“123 456 789” жолын енгізгенде, байттарды оқу ‘\n’ символына дейін 
жүзеге асырылады, яғни ”123 456 789\n\0” жолы s жолына енгізіледі, жолды 
шығарғанда puts функциясы тағы да бір ‘\n’ символын қайтарады, демек “123 
456 789\n\n” жолы шығарылады. 
char s[20]; 
scanf(“%s”,s); //
стандартты ағымнан жолды енгізу
printf(“%s”,s); //
стандартты ағымнан жолды шығару 
 
Программаның жұмыс нәтижесі: 
“123 456 789”, жолын енгізгенде, байттарды оқу бірінші пробелге дейін 
жүзеге асырылады, яғни. жолға “123/0” жолының тек қана бірінші сөзі кіреді, 
демек 123 саны шығарылады. s – массив аты, яғни оның бірінші элементінің 
адресі, scanf функциясында & операциясы қолданылмайды. 


Достарыңызбен бөлісу:
1   ...   54   55   56   57   58   59   60   61   ...   79




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет