1. Mis on C-keele puts-funktsioon? Ülevaade ja omadused
puts-funktsioon on lihtne funktsioon, mis kuvab stringe C-keeles standardväljundisse (konsooli). See on lihtsam kui printf ja selle eripära on see, et see lisab automaatselt reavahetuse. Standardväljundi suunamist (redirect) kasutades saab väljundi suunata ka faili või teise programmi.
1.1 Põhifunktsioon ja süntaks
puts-funktsiooni põhistruktuur on järgmine:
#include <stdio.h>
int puts(const char *s);Funktsioon: Kuvab määratud stringi standardväljundisse ja lisab automaatselt lõppu reavahetuse. Kui väljastamine õnnestub, tagastab mitte-negatiivse täisarvu; vea korral tagastab EOF.
2. puts-funktsiooni põhiline kasutamine
Selgitame puts-funktsiooni kasutamist konkreetsete koodinäidete abil.
2.1 Lihtne väljund puts abil
Järgmine kood näitab, kuidas kasutada puts-i, et kuvada konsooli „Hello, World!”:
#include <stdio.h>
int main() {
// Kuvab "Hello, World!" konsoolile
puts("Hello, World!");
return 0;
}2.2 Täitmise tulemus
Täitmise tulemus on järgmine:
Hello, World!Kuna reavahetus lisatakse automaatselt, on järgnev väljund selgelt eraldatud.
3. puts ja printf erinevused
puts ja printf on sarnased, kuid neil on erinevad omadused. Oluline on mõista nende väljundvormingute ja kasutusviiside erinevust.
3.1 Peamised erinevused puts ja printf vahel
- Reavahetuse lisamine:
putslisab pärast väljundit automaatselt reavahetuse, kuidprintfmitte. Vajadusel tuleb see käsitsi lisada. - Vormingumäärangud:
putsei toeta vormingumääranguid (%d,%sjne), seega on keerukama väljundi jaoks sobivamprintf.
3.2 Näited puts ja printf kasutamisest
Järgmine kood näitab puts ja printf kasutusviise:
#include <stdio.h>
int main() {
// Lihtsaks stringi väljundiks kasuta puts
puts("Hello, World!");
// Muutujatega väljundi jaoks kasuta printf
int num = 10;
printf("The number is: %d\n", num); // Reavahetus lisatud käsitsi
return 0;
}See näide näitab, et puts sobib lihtsaks stringi väljundiks ja printf sobib muutujatega ja vorminguga väljundiks.
4. puts-funktsiooni laiendatud kasutus
puts on kasulik ka silumisel ja faili väljundil.
4.1 Silumissõnumite kuvamine
Silumisel saab puts-i kasutada kontrollimaks, kas programm jõudis teatud punkti. Näide:
#include <stdio.h>
int main() {
puts("Programm on käivitunud");
// Vahepealne sõnum
puts("Kontrollime vaheprogressi");
puts("Programm on lõppenud");
return 0;
}4.2 Väljund faili
Faili väljundi jaoks suuna standardväljund ümber. Näide:
#include <stdio.h>
int main() {
// Suuname standardväljundi faili output.txt
FILE *file = freopen("output.txt", "w", stdout);
if (file == NULL) {
perror("Faili avamine ebaõnnestus");
return 1;
}
puts("Väljund faili");
fclose(file);
return 0;
}
5. puts-funktsiooni tähelepanekud
5.1 NULL-pointeri käsitlemine
puts-ile NULL-i andmine võib põhjustada määramata käitumise. Soovitav on enne kontrollida.
#include <stdio.h>
int main() {
char *str = NULL;
if (str != NULL) {
puts(str);
} else {
puts("String on NULL.");
}
return 0;
}5.2 Pikkade stringide väljund ja puhvri ületäitumine
Väga pikkade stringide või vigaste pointerite puhul tuleb vältida puhvri ületäitumist, sest C-keeles võib see põhjustada turvariske.
5.3 Jõudluse kaalutlused
Kui puts-i kutsutakse sageli, võib see muutuda jõudluse kitsaskohaks. Suure hulga väljundite korral tasub kaaluda fputs või puts_unlocked kasutamist (mitte lõimede puhul).
6. puts ja fputs erinevused
fputs sarnaneb puts-iga, kuid võimaldab määrata faili voogu. Peamised erinevused:
6.1 Erinevused
- Väljundi sihtkoht:
putsväljastab ainult standardväljundisse,fputsvõib kirjutada ükskõik millisesse faili voogu. - Reavahetus:
putslisab automaatselt reavahetuse,fputsmitte.
6.2 fputs näide
#include <stdio.h>
int main() {
FILE *file = fopen("output.txt", "w");
if (file == NULL) {
perror("Faili avamine ebaõnnestus");
return 1;
}
// Lisa reavahetus käsitsi
fputs("Väljund faili", file);
fputs("\n", file);
fclose(file);
return 0;
}7. Korduma kippuvad küsimused (KKK)
K1: Millal kasutada puts-funktsiooni?
V: puts sobib lihtsate stringide ja silumissõnumite jaoks, kus on vaja automaatset reavahetust.
K2: Kuidas valida puts ja fputs vahel?
V: puts sobib standardväljundile, fputs failiväljundile või olukordadesse, kus reavahetust pole vaja.
K3: Kas puts_unlocked on soovitatav?
V: puts_unlocked ei toeta lõimesid, kuid ühelõimelistes programmides võib see suurendada kiirust.
8. Kokkuvõte
puts-funktsioon on mugav tööriist lihtsaks väljundiks C-keeles. Õige kasutamine koos printf ja fputs-iga aitab kirjutada efektiivset ja loetavat koodi.


