strcat() Kullanımı
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 17 / 63.
strcpy() ile dizeleri kopyalamayı öğrendin, peki iki dizeyi birleştirmek istersen ne olacak? Buna birleştirme denir ve C, bu amaçla <string.h> kütüphanesinden strcat() işlevini sağlar.
strcat() işlevi, bir dizenin içeriğini başka bir dizenin sonuna ekler. İki bağımsız değişken alır: hedef dize (değiştirilecek olan) ve kaynak dize (sona eklenecek olan).
#include <stdio.h>
#include <string.h>
char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name); // greeting artık "Hello World" içeriyorHedef dizenizin hem özgün içeriği hem de eklenen yeni içeriği barındıracak kadar alana sahip olması çok önemlidir. strcat() işlevi hedef dizedeki null sonlandırıcıyı bulur, onu kaldırır, kaynak dizeyi o konuma kopyalar ve en sona yeni bir null sonlandırıcı ekler.
Bazen bir sayıyı (örneğin bir int değerini) bir dizeyle birleştirmeniz gerekir. strcat() yalnızca karakter dizileriyle çalıştığından, önce sayıyı bir dizeye dönüştürmeniz gerekir. Bunu, printf() gibi çalışan ancak biçimlendirilmiş sonucu ekrana yazdırmak yerine bir karakter dizisine yazan sprintf() ile yapabilirsiniz. sprintf(), çoğu C programında zaten eklenmiş olan <stdio.h> dosyasının bir parçasıdır.
int n = 42;
char numStr[20];
sprintf(numStr, "%d", n); // numStr artık bir string olarak "42" içeriyorSayı numStr içinde bir dize olarak depolandığında, her zamanki gibi onu başka bir dizenin sonuna eklemek için strcat() kullanabilirsiniz:
char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr); // summary now contains "Total people processed: 3"Bu işlev, tek tek sözcüklerden tam cümleler oluşturmak veya kullanıcı girdisini önceden tanımlanmış metinle birleştirmek gibi, daha küçük parçalardan daha uzun dizeler oluşturmak için gereklidir.
Görev
KolayKişiselleştirilmiş mesajlar oluşturmak için strcat() işlevini kullanarak dize birleştirmeyi gösteren bir C programı yazın. Programınız şunları yapmalıdır:
- İşlenecek kişi sayısını temsil eden bir tamsayı
nokuyun - Her kişi için:
- Adını girdiden okuyun
- Soyadını girdiden okuyun
- 100 elemanlı
fullNameadlı bir karakter dizisi oluşturun - Adı
strcpy()içine kopyalamak içinfullNamekullanın strcat()içine tek bir boşluk " " eklemek içinfullNamekullanın- Soyadı
strcat()içine eklemek içinfullNamekullanın - 150 elemanlı
greetingadlı bir karakter dizisi oluşturun - "Hello, " ifadesini
strcpy()içine kopyalamak içingreetingkullanın strcat()ifadesinifullNameiçine eklemek içingreetingkullanın- "! Welcome to our program." ifadesini
strcat()içine eklemek içingreetingkullanın - Son selamlama mesajını yazdırın
- Tüm kişiler işlendikten sonra bir özet mesajı oluşturun:
- 100 elemanlı
summaryadlı bir karakter dizisi oluşturun - "Total people processed: " ifadesini
strcpy()içine kopyalamak içinsummarykullanın nsayısını bir dizeye dönüştürün ve bu dizeyistrcat()içine eklemek içinsummarykullanın- Özet mesajını yazdırın
- 100 elemanlı
Dize işlevlerini kullanmak için <string.h> başlığını eklemeyi unutmayın.
Çıktınız aşağıdaki biçimde sonuçları göstermelidir:
Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]Örneğin, girdi şu şekildeyse:
2
John
Doe
Alice
SmithÇıktınız şu şekilde olmalıdır:
Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2Bu alıştırma, birden çok dizeyi birlikte birleştirmek için strcat() kullanımını, ilk dize kurulumunu gerçekleştirmek üzere strcpy() ile birleştirmenizi ve birden çok bileşenden adım adım karmaşık dizeler oluşturmanızı test eder.
Kendin dene
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
// Kişi sayısını oku
int n;
scanf("%d", &n);
// TODO: Kodunuzu aşağıya yazın
// Her kişiyi işle ve selamlama mesajları oluştur
// Ardından özet mesajını oluştur ve görüntüle
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String FonksiyonlarıKendi başına pratik yap: Online C derleyicisi