sigisMoNd Mesaj tarihi: Ekim 26, 2009 Paylaş Mesaj tarihi: Ekim 26, 2009 selamlar! C ogrenmeye yeni basladim. daha cok cok basindayim diyebilirim. bilenler yardimci olursa sevinirim. programda (adi stegit) kendi secicegim kelimeleri bir karakterle sifreleyip daha sonra da desifre etmem gerekiyor. 28 tane kelimeyi kendim belirlicem. orasi hikaye kismi benim elimde bulunan programda 3 tane kelime var sadece. yazdigim programin 2 modda calismasi gerekiyor. hangi modda calisacagina programi compile ettigim terminalden secmem lazimmis. -f find mode -h hide mode [-o<filename>] output filename terminale bunlari yazip ./stegit -h -o secret_message_within cat secret_message_within stegit -f < secret_message_within oyle calistirmam lazim. Mirage'a pmden sormustum. main metodumun -h -o gibi argumanlari da kabul etmesi gerekiyormus. main metodda bunlari nasil tanimlarim ya da main metodun kabul etmesini saglarim? programi yazdim ama duz bir sekilde calisiyor. terminalden mudahale etmeme gerek kalmiyor en basta cumleyi yazdiktan sonra. kod #include <stdio.h> #include <stdlib.h> #include <string.h> const char p1[]= { "Hello" }; const char p2[]= { "mello" }; const char p3[]= { "cello" }; const char p0 = ' '; char output[30]; int hide_string (char input[]) { if (strstr(input, p1) != NULL) { strcat(output, "a"); } if (strstr(input, p2) != NULL) { strcat(output, "b"); } if (strstr(input, p3) != NULL) { strcat(output, "c"); } printf("%s", output); } int decode_string (char input[]) { int i; for (i=0; i<sizeof(input); i++) { if (input[i] == 'a') { printf(p1); printf(" "); } else if (input[i] == 'b') { printf(p2); printf(" "); } else if (input[i] == 'c') { printf(p3); printf(" "); } } printf("nn"); } void readLine(char line[]) { char ch; int i = 0; do { ch = getchar(); line[i] = ch; ++i; } while (ch != 'n'); } int main(void) { char in[300]; printf("Input: "); readLine(in); printf("After Hide-Method: "); hide_string(in); printf("n"); printf("After Find-Method: "); decode_string(output); return EXIT_SUCCESS; } kodda sunu soyle yapsan daha iyi olur gibi tavsiyelere de acigim. bu asil soru disinda bir sorum daha var: javada stringler icin contains sayesinde ayrica metod yazilmasina gerek kalmiyordu. yukarda onun icin readLine metodunu yazdim. internetten de baktigim kadariyla bulamadim. contains'e benzer var midir C'de? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
fizban Mesaj tarihi: Ekim 26, 2009 Paylaş Mesaj tarihi: Ekim 26, 2009 http://publications.gbdirect.co.uk/c_book/chapter10/arguments_to_main.html Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
El-Barto Mesaj tarihi: Ekim 26, 2009 Paylaş Mesaj tarihi: Ekim 26, 2009 Valla c'de nasıl alındığını tam hatırlamasamda benzerliklerinden dolayı java'dan söliim. main(String args[]) die yazadınmıydı programı çalışdırırken sonuna eklediin her string args'a eklenir. P.S: şimdi baktım fizbanın linki direk anlatmış zaten char* argv[] (argümanlar için string arrayi oluyo) ve int argc toplam argüman sayısı oluyo. yine dediğim gibi mainin içine koyucaksın bunları. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Bone Mesaj tarihi: Ekim 27, 2009 Paylaş Mesaj tarihi: Ekim 27, 2009 C öğrenmeye yeni başlayan birisine shell programming yaptırmak, argument felan yollatmak ilginç geldi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
El-Barto Mesaj tarihi: Ekim 27, 2009 Paylaş Mesaj tarihi: Ekim 27, 2009 Shell programming shellin kendisini yazmak diilmi abi, burda sadece program shellden argüman alıyo, bence gayet normal bişey öğrettikleri :D Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Ekim 27, 2009 Konuyu açan Paylaş Mesaj tarihi: Ekim 27, 2009 @Bone: C ogrettikleri ilk programlama dili degil. o yuzdendir belki. @fizban: saol link icin. bir bakayim zaman bulunca. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Ekim 27, 2009 Paylaş Mesaj tarihi: Ekim 27, 2009 Main metodunun parametrelerini istediğin gibi belirleyemezsin. Genelde main metodu parametre olarak string array'i ya da char array'i alacak şekilde de tanımlanabilir. Sonra o array'i alıp kendin parse edeceksin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 2, 2009 terminalden calisma modunu secebilmek icin getopt kullanilmasi gerektigini ogrendim. programin geri kalaniyla (yukardakinde degisiklikler yaptim) compile edince sorun cikmiyor. ancak ben -h modunu secsem bile geri kalanini da yapiyor. hatta sonrasinda 2 satirda Option ohne Argument hatasi geliyor. sorunun nerde oldugunu bulamadim. bir de dosyaya yazdirma olayini yapamadim henuz. gerci iki secenek sunulmus. ya sifrelendikten sonra hemen ekrana verilcek ya da cat komutuyla terminalden cagirilcak sifrelenmis hali. onu da bilen biri anlatirsa super olur. said: int main (int argc, char *argv[]) { char input[301]; int c; while ((c = getopt(argc, argv, ":hf:o:")) != EOF) { switch (c) { case 'h': scanf("%s", input); hide_modus(input); case 'f': find_modus(input); case 'o': fprintf(stderr, "Option ohne Argumentn"); break; case '?': fprintf(stderr, "ungueltiges Argumentn"); break; } } } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Kasım 2, 2009 Paylaş Mesaj tarihi: Kasım 2, 2009 Her case'in sonuna break koyman lazım. Yoksa case'i bitirince bir sonrakinden devam eder. Dosya yazdırma konusunda bilgim yok. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
El-Barto Mesaj tarihi: Kasım 2, 2009 Paylaş Mesaj tarihi: Kasım 2, 2009 Tam hatırlamıyorum ama googledan fopen ve fput, fget komutlarını araştırırsan çözersin işi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 2, 2009 Mirage said: Her case'in sonuna break koyman lazım. Yoksa case'i bitirince bir sonrakinden devam eder. Dosya yazdırma konusunda bilgim yok. abi.. gec saatte ugrasinca gorememisim. tesekkurler. @El-Barto: tamam bir bakiyim fopen, fput ve fget e. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Kasım 2, 2009 Paylaş Mesaj tarihi: Kasım 2, 2009 abi yil 2009, ben 2. gun cinnet getirir hocayi, muduru vs artik kim veriyosa isi keserdim, allah sabir versin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 2, 2009 az kaldi ona da. abi niye C baska dil mi yok? neyse edit3: bir daha bakiyim Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 2, 2009 28 tane if else yapmamak icin soyle yaptim: <blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username=""> <div class="ipsQuote_citation ipsQuote_open"><a href="#" data-action="toggleQuote"> </a> said: </div> <div class="ipsQuote_contents ipsClearfix" style="display: block;" animating="false">const char *woerter[] = { "Hello", "wie", "geht", "es", "dir", "Wolke", "bitte", "geben", "Sie", "drei", "der", "Himmel", "ist", "klar", "muessen", "beide", "und", "werden", "Aufgabenstellungen", "la", "bla", "hola", "Weg", "Wetter", "gut", "!", "?", "aloha"}; const char *ch[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", ".", " "}; char hide_string (char input[]) { int i; char *pointer; for (i=0; i<sizeof(woerter); i++){ pointer = strstr(input, woerter[i]); if (pointer != NULL) { printf("%s", ch[i]); } } }</div></blockquote> kelimeleri girdikten sonra Segmentation Fault aliyorum. google dan baktim. sanirim bu javadaki IndexOutOfBoundsException gibi. ama mantiksiz geldi. indexi 0'dan baslayip kelimeler icinde ararken her seferinde strstr fonksiyonuyla girilenin icinde olup olmadigina bakiyor. varsa da ayni indexli harfi yazdiriyor. sonucta butun kelimeler icinde aramasi lazim. i in sinirindan daha kucuk bir yere kadar karsilastiriyor. woerter[] in icinde aranicagi icin onu sinir kabul etmek dogru olmaz mi? yanlis mi dusunuyorum? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Kasım 2, 2009 Paylaş Mesaj tarihi: Kasım 2, 2009 Nihihi, C cehennemine hoş geldin. C'de parametre olarak array tanımladığın sadece adres vermiş oluyorsun ve ama array'in boyu hakkında bir bilgi vermiyorsun (daher segmentation fault ;)). Extra bir parametre olarak array boyunu da vermen lazım. Sebebi ve detaylar için şurdan array bölümüne bakarsın: http://www.cplusplus.com/doc/tutorial/arrays/ Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 2, 2009 :'( (:P) dedigin hide modusta ise yaradi ancak find modusta yine segmentation fault aliyorum. <blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username=""> <div class="ipsQuote_citation ipsQuote_open"><a href="#" data-action="toggleQuote"> </a> said: </div> <div class="ipsQuote_contents ipsClearfix" style="display: block;" animating="false">int decode_string (char input[]) { int i; char *pointer; for (i=0; i<28; i++){ pointer = strstr(input, ch[ i]); if (pointer != NULL) { printf("%s ", woerter[ i]); } } }</div></blockquote> hide'dakinin tam tersini yaptim. soyle bakinca mantikli da geldi ama desifre kismi calismiyor nedense. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
El-Barto Mesaj tarihi: Kasım 2, 2009 Paylaş Mesaj tarihi: Kasım 2, 2009 Tam yaptığın işlemi anlamadım da sanırım hata şu, pointer'ın boyutunu başta belirledikten sonra aynı methodla büyütemezsin. "malloc" veya öyle bişey kullanman gerekebilir. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 2, 2009 hide_string ve hide_modus metodlari ayni aslinda. 2 ayri yerde yapiyorum o yuzden bir ordan bir oburunden kopyalayinca karismis olabilir. main haric 2 tane metodum var. hide_string(hide_modus)te okunan stringi sifreliyorum indexi ayni olan harfle, decode_string(find_modus)te de bu sifrelenmis cumleyi desifre ediyorum. tabi daha hide_stringten cikan outputu decode_stringte kullanmayi basaramadim o ayri bir sorun. onun icin de sunu dusundum ama ise yaramadi: <blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username=""> <div class="ipsQuote_citation ipsQuote_open"><a href="#" data-action="toggleQuote"> </a> said: </div> <div class="ipsQuote_contents ipsClearfix" style="display: block;" animating="false"> char hidden[29]; int decode_string (char input[]) { int i; char *pointer; for (i=0; i<28; i++){ pointer = strstr(input, ch[ i]); if (pointer != NULL) { strncmp(hidden, ch[ i]); //printf("%s ", woerter[ i]); } } }</div></blockquote> main methodda bunu cagirdiktan sonra hidden stringini decode_string(hidden); metoduyla cagirmayi denedim ama hata aldim. once su decode_string methodunun duzgun calismasi lazim. yukardaki hatayla ilgili olarak da: 2 pointer da zaten farkli metodlar icinde tanimli. ayni metodla degisiklige ugratmiyorum bildigim kadariyla? bu sekilde yanlissa siniri ayri bir parameterle belirledikten sonra hide_stringte de ayni hatayi vermesi gerekmez miydi? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 2, 2009 strncmp yanlis fonksiyonmus strcat kullaninca hata almadim nihaha ama decode_string hala calismiyor //_- Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Kasım 2, 2009 Paylaş Mesaj tarihi: Kasım 2, 2009 yalnız hidden int, senin argüman char ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 2, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 2, 2009 tamam buraya kopyalamadan kendim yazmistim char olucak. heyecanlandim:P duzeltiyim Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 21, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 21, 2009 C'de const ve volatile tiplerinin farki nedir? googleladim ama farkli gorusler var. bazilari tam tersi olarak tanimlamis bazilari da benzer demis. basit birer ornekle aciklayabilicek olan var mi? ne olunca hangisini secmeliyiz mesela? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
nameless Mesaj tarihi: Kasım 21, 2009 Paylaş Mesaj tarihi: Kasım 21, 2009 const, değişkenin değerinin değişmesini engellemek için kullanılan bir keyword. hatırladığım kadarıyla volatile da uygulama dışında değiştirilebilecek değişken tanımlamak içindi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
sigisMoNd Mesaj tarihi: Kasım 22, 2009 Konuyu açan Paylaş Mesaj tarihi: Kasım 22, 2009 hmm tesekkurler Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar