argc ve argv
Program bağımsız değişkenlerini okuma
argc ve argv, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.
Programlar bağımsız değişken alır
Bir programı uçbirimden çalıştırırken ona komut satırı bağımsız değişkenleri adı verilen ek sözcükler geçirebilirsiniz.
C bunları argc (bağımsız değişken sayısı) ve argv (bağımsız değişken vektörü) olmak üzere iki parametre aracılığıyla main işlevine iletir.
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("This program received %d arguments\n", argc);
return 0;
}main imzası
main işlevinin tam biçimi şöyledir:
int main(int argc, char *argv[])
argc, bağımsız değişkenlerin sayısıdır. argv, her bağımsız değişken için bir tane olmak üzere dize işaretçilerinden oluşan bir dizidir.
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("argc = %d\n", argc);
return 0;
}argv[0] program adıdır
İlk öğe olan argv[0], programı çağırmak için kullanılan addır (veya yoldur).
Kullanıcı ek bağımsız değişken geçmese bile argc değerinin en az 1 olmasının nedeni budur.
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Program name: %s\n", argv[0]);
return 0;
}Tüm bağımsız değişkenleri yazdırma
argv içindeki her bağımsız değişken dizesini ziyaret etmek için 0 dizininden argc - 1 dizinine kadar döngü oluşturabilirsiniz.
#include <stdio.h>
int main(int argc, char *argv[]) {
for (int i = 0; i < argc; i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}argv null ile sonlandırılır
C standardına göre argv[argc] değerinin NULL işaretçisi olduğu garanti edilir.
Bu, argc kullanmak yerine NULL değerine ulaşana kadar döngü oluşturabileceğiniz anlamına gelir; ancak argc ile saymak daha yaygındır.
#include <stdio.h>
int main(int argc, char *argv[]) {
char **p = argv;
while (*p != NULL) {
printf("%s\n", *p);
p++;
}
return 0;
}Bağımsız değişkenler her zaman dizedir
Sayılar da dahil olmak üzere her bağımsız değişken bir dize olarak gelir. Kullanıcı 42 geçirirse tamsayıyı değil, "42" metnini alırsınız.
Bunu atoi veya strtol gibi işlevlerle kendiniz dönüştürmelisiniz.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc > 1) {
int n = atoi(argv[1]);
printf("Number plus one is %d\n", n + 1);
} else {
printf("Pass a number\n");
}
return 0;
}Bağımsız değişken sayısını denetleme
argv[i] okumadan önce her zaman argc değerini doğrulayın. Sağlanan bağımsız değişkenlerin dışındaki bir dizine erişmek tanımsız davranıştır.
Tipik bir koruma, yeterli sayıda bağımsız değişken verilip verilmediğini denetler ve aksi durumda kullanım iletisi yazdırır.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <name>\n", argv[0]);
return 1;
}
printf("Hello, %s!\n", argv[1]);
return 0;
}Sıfır olmayan çıkış kodu kullanma
Bağımsız değişkenler hatalı olduğunda, kabuğa başarısızlığı bildirmek için main işlevinden sıfır olmayan bir değer döndürün.
Geleneksel olarak 0 başarı, diğer tüm değerler ise bir hata oluştuğu anlamına gelir.
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Need exactly 2 arguments\n");
return 1;
}
printf("Got both arguments\n");
return 0;
}Sayısal bağımsız değişkenleri toplama
Uygulamalı bir örnek olarak, komut satırında geçirilen tüm sayıları her birini atoi ile dönüştürüp toplamda biriktirerek toplayabilirsiniz.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int sum = 0;
for (int i = 1; i < argc; i++) {
sum += atoi(argv[i]);
}
printf("Sum = %d\n", sum);
return 0;
}Alternatif argv gösterimi
char *argv[] yerine char **argv görebilirsiniz. Bir işlev parametresi olarak ikisi de aynı anlama gelir: ilk dize işaretçisine işaretçi.
Her ikisiyle de argv[i] kullanarak dizinleme yapabilirsiniz.
#include <stdio.h>
int main(int argc, char **argv) {
if (argc > 1)
printf("First arg: %s\n", argv[1]);
return 0;
}Bağımsız değişkenleri geri yansıtma
Klasik echo komutu, bağımsız değişkenlerini basitçe yazdırır. Aşağıda bunları boşluklarla birleştiren en küçük sürüm yer alır.
#include <stdio.h>
int main(int argc, char *argv[]) {
for (int i = 1; i < argc; i++) {
printf("%s", argv[i]);
if (i < argc - 1) printf(" ");
}
printf("\n");
return 0;
}Kısa Denetim
argc ve argv konusundaki anlayışınızı sınayın.
Özet
Programların komut satırı girdisini nasıl okuduğunu öğrendiniz:
main(int argc, char *argv[]), sayıyı ve diziyi alır.- argv[0] programın adıdır; gerçek bağımsız değişkenler 1 dizininden başlar.
argv[argc]değeri NULL olur.- Bağımsız değişkenler her zaman dizedir; sayıları
atoiile dönüştürün ve önceargcdeğerini doğrulayın.
Sıkça Sorulan Sorular
“argc ve argv” dersi ücretsiz mi?
Evet — “argc ve argv” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.
“argc ve argv” dersinde ne öğreneceğim?
Program bağımsız değişkenlerini okuma C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“argc ve argv” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- argc ve argv
- Seçenekleri Ayrıştırma
- getopt
- CLI Aracı Oluşturma