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:
puts
lisab pärast väljundit automaatselt reavahetuse, kuidprintf
mitte. Vajadusel tuleb see käsitsi lisada. - Vormingumäärangud:
puts
ei toeta vormingumääranguid (%d
,%s
jne), 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:
puts
väljastab ainult standardväljundisse,fputs
võib kirjutada ükskõik millisesse faili voogu. - Reavahetus:
puts
lisab automaatselt reavahetuse,fputs
mitte.
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.