- gets(), puts(), fgets(), fputs(), sprintf() функциялары
Көптеген қатармен жұмыс істейтін функциялар аргумент ретінде символдық массивтер атауын қабылдайды: gets(), puts(), fgets(), fputs(), sprintf(), strcpy(), strcat(), strncmp(), strlen().
Келесі программада gets(), puts(), fgets(), fputs(), sprintf() фуекцияларының көмегімен қатар енгізу/шығару процессін басқару көрсеілген:
# include <stdio.h>
# define SIZE 20
main()
char s[SIZE];
fputs(“Бірінші қатарды ендіріңіз:”,stdout);
gets(s);
fputs(“Cіз ендірдіңіз:”,stdout);
puts(s);
fputs(“Екінші қатарды ендіріңіз:”,stdout);
gets(s,SIZE,stdin);
fputs(“Cіз ендірдіңіз:”,stdout);
fputs(s, stdout);
sprintf(s,”Бұл %s тексеру еді”, “тек”);
fputs(“sprintf() функциясы құрды:”, stdout);
fputs (s, stdout);
return(0);
Программа нәтижесінде экранға мыналар шығарылады:
Бірінші қатарды ендіріңіз : бірінші қатар
Сіз ендірдіңіз : бірінші қатар
Екінші қатарды ендіріңіз: екінші қатар
Сіз ендірдіңіз: екінші қатар
sprintf() функциясы құрды: Бұл тек тексеру еді
Егер ендірілген қатар символдары sмассивіне ажыратылған ұяшықтардын кем болса онда программа дұрыс істеді. Егер массив көлемінен асып кететін символдар қатары енгізілсе онда экранда симводлдар дұрыс шығарылмайды.
gets() фунциясы стандарт құрылғыдан (көбінесе клавиатурадан) ендірілген символдардды қабылдап, оларды аргумент ретінде көрсетілген массивке жайғыстырады. Enter клавиші басылса жаңа қатар дегенді білдіретін символ (\n) генерация жасалынады (өндіріледі). gets() функциясы оны нольдік символға түрлендіріп қояды(\0), бұл қатар соңы белгісін білдіреді. Gets() функциясын қолдануда ендірілген симводардың массив өлшемінен артып кеткендігін тікелей анықтаудың мүмкіндігі жоқ.
puts() функциясы gets() функциясының көмегімен алынған мәліметті экранға шығраады. Ол керісінше (\0) символын (\n) ситмволына ауыстырып қояды.
fgets() функциясы gets() – ке ұқсас. Айырмашылығы массив өлше міне қатысты ендірілген символдар санана контроль жасай алады. Символдар стандартты ендіру құрылғысынан (stdin), немесе файлдан, жалпы көрсетілген ағымнан (поток) оқиды. (С++ программасы іске қосылған соң бірден 5 стандарты ағым ашылады: stdin – енгізу, stdout- шығару,stderr- қателер, stdprn- баспаға шығару,stdoux- сыртқы құрылғы)
Ендірілген символдар массив өлшемінен 1-ге кем болу керек: соңғысын автоматтты түрде нольдік символды тіркейді.
Егер жаңа қатар символы ендірілсе (Enter басылса), онда ол массивте \0 символының алдынан жазылады.
fputs() функциясы да puts() функциясы сияқты, fgets() функциясымен бірге жұмыс істейді. Ол символдарды көрсетілген ағымға бағытттайды: файл не стандартты шығару құрылғысына (stdout).
sprintf() функциясының атауы “string printf()” сөзінің қысқартылған түрі, яғни “қатарлық printf() функциясы” printf() функциясынан айырмашылығы sprintf() нәтижені экранға емес, көрсетілген символдар массивіне орналастырады. Бұл егер функция жұмысы нәтижесін экран не принтер бірнеше мәрте шығаруға тура келетін жағдайларда пайдалы болады.
- strcpy(), strcat(), strncmp(), strlen() функциялары
strcpy(), strcat(), strncmp(), strlen() функциялары string.h файлында сипатталған. Олардың жұмыс істеуі үшін симводар қатары міндетті түрде қатар соңы белгісімен — \0 символымен аяқталуы керек.
strcpy() – бірінші көрсетілген массив айнымалыға екінші көрсетілген қатарды не массивтің мәнін көшіреді. Мысалы:
char a[10]=”Мен 4-курста”;
strcpy(a, “оқимын”);
Нәтиже: Мен 4-курста оқимын
strcat() функциясы 2 жеке қатарды не массивтерді біріктіреді (конкетенация жасайды).
Мысалы: char s[]=”Салем!”, sa[]=”Мадина”, sb[40];
strcpy(sb, s);
strcpy(sb, sa);
strcpy(sb, “хал-жағдайың жақсы ма?”);
strlen() – қатардағы символдар санын соңғы нольдік санды қоспай, есептеп қайтарады, оның мәні бүтін болады.
strncmp() функциясы бірінші қатарды, екіншісінен іздейді, ал үшінші аргументте бірінші қатардың ұзындығы көрсетіледі. Егер қатарлдар бірдей болса, функция нолдік мән қайтарады, егер бірдей болмаса яғни егер бірінші қатар екіншісінен кіші болса теріс мән қайтарады, керісінше үлкен болса, оң мән қайтарады.
Мысал: сhar s[]=”Вита”, sa[]=”Вика”;
int len, res=0;
len=strlen(s);
res=strncmp(s, sa, len);