Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

String İfade

Başlatan x-nomek, 29 Mart 2013, 23:33:37

x-nomek

S.a

ccs c ' de değişkenin içindeki String bir ifadeyi nasıl kontrol edebilirim bir türlü beceremedim

ÖRNEK;  'x' Değişkenin içinde "merhaba" string değeri olsun Ben bu değeri if-else koşulu ile nasıl kontrol edeceğim.

char x[7];

if(x=="merhaba")
{
******
}
Deniyorum olmuyor farklı yontemlerde denedim yine olmadı.

ertan2002


ziyaretci

Alıntı yapılan: x-nomek - 29 Mart 2013, 23:33:37
S.a

ccs c ' de değişkenin içindeki String bir ifadeyi nasıl kontrol edebilirim bir türlü beceremedim

ÖRNEK;  'x' Değişkenin içinde "merhaba" string değeri olsun Ben bu değeri if-else koşulu ile nasıl kontrol edeceğim.

char x[7];

if(x=="merhaba")
{
******
}
Deniyorum olmuyor farklı yontemlerde denedim yine olmadı.

char: 8 bitlik bilgi tutar hafızasında, her bir karakter 8 bit olarak kaydedilir. Senin denediğin kod üzerinde 8 bitlik değişkendeki bilgiyi 32 bit olarak okumaya çalışıyorsun. Yani 5 litrelik suyu 1 litreye doldurduğunu sanıp, 1 litrelik bidona diğer 4 litre nerede diye sormana denk geliyor işlem. 

Aşağıdaki gibi bir kontrol yapabilirsin.

  Char x[7]={"m","e","r","h","a","b","a"};

if(x[0]=="m" && x[1]=="e" && x[2]=="r" && ....)

{
******
}

mufitsozen

#3
bkz: http://www.kadirga.k12.tr/egitim/c_programlama/ders.php-id=11.htm

Kadırga Anadolu Meslek Lisesi Teknik Lise ve Endüstri Meslek Lisesi'ne gitmis olsaydiniz bu konuyu PICPROJEde sormaya gerek kalmiyacakti  ::)


Bazı String Fonksiyonları

Bu fonksiyonlar standart C dilinde iki stringi karşılaştırmak, bir stringin içeriğini diğerine kopyalamak ve stringin uzunluğunu bulmak vb işlemler için tanımlı fonksiyonlardır. Bu ve benzeri fonksiyonlar kullanılırken string.h kütüphanesi programın başına ilave edilmelidir. Burada sadece bunlardan bir kaçı Tablo 11.1 de verilmiştir.

str, str1 ve str2 birer string ve kr bir karakter olmak üzere:

Tablo 11.1 : string.h kütüphanesine ait, bazı string fonksiyonları
strcmp( str1,str2 );		str1 ve str2 yi karşilaştırır
strcpy( str1,str2 ); 	str2 yi str1 e kopyalar
strcat( str1,str2 ); 	str2 yi str1 e ekler
strrev( str ); 	str yi ters çevirir
strlen( str ); 	str nin kaç karakterden oluştuğunu hesaplar
strchr( str,kr ); 	kr ile verilen karakterin str içindeki soldan itibaren yerini verir

Program 11.11 : İki stringin karşılaştırılması

1:  #include <string.h>
2:  main(){
3:     char ktr1[10],ktr2[10];
4:     int sonuc;
5:     printf("1. katar:");gets(ktr1);
6:     printf("2. katar:");gets(ktr2);
7:     sonuc = strcmp(ktr1,ktr2);
8:     if(sonuc>0)        puts("2. 1.den büyük");
9:     else if(sonuc<0)   puts("2. 1.den küçük");
10:    else               puts("2. 1. eşit");
11: }

Program 11.12 : basit bir şifre programı

1:  #include <string.h>
2:  main(){
3:     char sifre[20];
4:     printf("SIFRE : ");
5:     scanf("%s",sifre);
6:    if( strcmp(sifre,"deneme")==0 )
7:        puts("sifre dogru girildi");
8:     else
9:        puts("sifre yanlis!");
10: }

Program 11.13 : Bir stringi diğerine kopyalama

1:  #include <string.h>
2:  main(){
2:     char *str1="ahmet", str2[10];
4:  /* once */
5:     puts(str2);
6:     strcpy(str2,str1);
7: /* sonra */
8:     puts(str2);
9: }

Program 11.14 : bir stringi diğerine ekleme

1:  #include <string.h>
2:  main(){
3:    char *a="ahmet            ";
4:    char *b="bingul";
5:    strcat(a,b);
6:    printf(a);
7:  }

Program 11.15 : strinin uzunluğunu hesaplar

1:  #include <string.h>
2:  main(){
3:     char ktr[100];
4:     puts("Birseyler yazin:");
5:     gets(ktr);
6:     printf("%s %d karakterden oluşmuştur.",ktr,strlen(ktr));
7:  }
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

ertan2002

#4
edit...

ziyaretci

#5
 
Alıntı yapılan: ertan2002 - 30 Mart 2013, 13:52:44
haha hocam hiç güleceğim yoktu.kusura bakmayın ama adama kısayolu tarif ederken sol elinizle sağ kulağı tutmuşsunuz, bahsettiğim fonksiyon zaten iki string/char bilimum şeyi karşılaştırıyor.. dizi elemanı 100 karakter olsa yine böyle if mi yazıyorsunuz siz :)

yazılımda önemli nokta yap çalışsın değildir, en iyi performans nasıl alınır, en kısa şekilde ve en güvenli şekilde nasıl çözüme gidilir bunu öğrenmek ve öğretmek lazım.. eminim ki bir çok uzman yazılımcı arkadaş da benim gibi düşünüyor.

Güleceğinize bir gösterseydiniz de bizde öğrenseydik, maksat yardımcı olmak mı? olanı sorgulamak mıdır ? Gülmek yerine en güzel ve en iyisini göstermeniz daha iyi olmaz mıydı? yoksa bu dediğiniz sadece lafta mı ?
     
  Herkes bu forumda bildiğinin en iyi şeklide yardımcı olmaya çalışıyor. Ve bu şekilde bazı ego tatmin ediciler yüzünden parlayacak yeteneklerin ışığı sönmeye yüz tutuyor. Bunu kişisel olarak algılamayın.

Belli ki, uzun yol olsa bile hayattaki bazı hedefleri birilerinin sırtından kazanmış olmalısınız ki, o uzun yolu yaşayarak, her anını adım adım öğrenmek isteyenler ile ego tatmini yapıyorsunuz. Herkes sizin kadar şanslı olmayabilir. Herkesin sizin gibi zamanında uzman birilerine sorarak öğrenecek imkanı olmayabilir.

Ve de başkalarının hakkında kararlar almak, büyük sorumluluk gerektirir.
-------->("dizi elemanı 100 karakter olsa yine böyle if mi yazıyorsunuz siz :)")
cevap:("yazılımda önemli nokta yap çalışsın değildir, en iyi performans nasıl alınır, en kısa şekilde ve en güvenli şekilde nasıl çözüme gidilir bunu öğrenmek ve öğretmek lazım.. eminim ki bir çok uzman yazılımcı arkadaş da benim gibi düşünüyor.")

ertan2002

#6
linki verdim zaten, orada örnek de mevcut. eğer arkadaş yapamazsa söyler ben de gerekli açıklamaları yaparım

mesaj birleştirme:: 30 Mart 2013, 16:12:40

Selam,
Aslında ben orada şahsınıza münhasır bir şey yazmadım. Sadece gösterdiğiniz çözüm yolu mantıklı gelmedi ve komiğime gitti. Sanırım güldüm demek ağrınıza gitmiş, bunun için gerçekten üzgünüm kötü amaçla yazmadım onu ... zaten yazımı editledim, rahatsız olacak bir durum yok.

şahsi olarak beni eleştirmişsiniz. Yaşım 28. Yaklaşık 10 yıldan beridir yazılımla uğraşıyorum. teknik eğitim endüstiryel elektronik den mezun oldum liseden yani bana yazılım öğretecek bir hocam yoktu, kendi başıma hiç destek almadan öğrendim, 2 tane vb 6.0 kitabı alarak bu işe adam gibi başladım, o zaman internet bu kadar yaygın değildi.. Sonra kendimi geliştirdim yine yardım almadan c# a geçtim, android yazılımla uğraştım v.s. lisans eğitimimi bitirdim, yurtdışında okudum ve yazılım mühendisi olarak 2 firmada çalıştım. Bunların hepsi bireysel başarı ve gece gündüz çalışarak olan şeyler. millet gezip tozarken ben eşek gibi çalışıyordum sabahlara kadar.. bunları söylemek istemezdim ama siz mecbur bıraktınız beni.

yüzlerce adama yazılım/elektronik/ingilizce dersi verdim gerek üniversitede gerek liselerde gerek sosyal hayatta gerek internette gerek yurtdışında.. hiç bir zaman insanların umutlarını kırma gibi bir amacım olmadı aksine insanları üretime dahil edebilmek için hassas olarak yazdım. zaten benim lafım konuyu açan kişiye değildi. kimsenin hevesini kırmak istemem böyle bi amacım da yok ego tatmini de söz konusu değil çünkü böyle bir şeye ihtiyacım yok.

sanırım ithamlarınıza cevap olmuştur, iyi çalışmalar

ziyaretci

 O zaman şu çıkmazmı ortaya, tamam herşey güzel hoş fakat, 10 yıldır yazılımla uğraşıyorum demişsiniz ve birçok tecrübeniz olmuş, öyle değil mi? Peki karşıdakinin tecrübesini bilmeden , kendi 10 yıllık tecrübe ve bilginizle kıyaslayarak alaycı bir tavır sergilemek hangi mantığa sığar?
Bunu karşıdakinin tecrübesini küçümsemek amacıyla söylemedim, tecrübe zamanla ve çalışılarak kazanılan bir bilgi birikimdir.
Benim tanımadığım ve tanınmadığım kişiden gelen hiçbir söz ağrıma gitmez, gidemez.

  Çünkü dediğim gibi, tanımıyorum, tanınmıyorum.

Davranışının yanlış olduğunu göstermek, bahsi geçen yanıtlarım için"ağrına gitmek"fiili ile uzaktan yakından alakalı olamaz.


ertan2002

çok gereksiz yere uzadı bu konu. peki madem ağrına giden bir şey yok o zaman bir şey dememe de gerek yok. ancak benim alay ettiğimi söylemen yanlış. kimseyle alay etmedim, etmem de.. sadece yol komiğime gitti bunu belirttim. benden kötüleri de iyileri de vardır her zaman. ne kendimi büyük görürüm ne aşağılarım. aynı şekilde başkasını da aşağılamam. güldüm demeseydim sanırım konu bu kadar uzamayacaktı.. neyse selametle.

ziyaretci


x-nomek

Yardımlarınız için çok teşşekür ederim arkdaşlar.

x-nomek

Peki kardeşlerim ben bunu şimdi ikinizin verdigi şekilde yaptım ve çalişti ama rs232 den gelen string degerle yapmaya çaliştim olmadı kariştirdim yani rs232 den gelen veriyi x[] degişkenine aktarcam onunda içini kontrol etcem gets(x)--getc=x  gibi komutları denedim ama yapıyorum olmuyor daha once yaptıgınız ornek varmı  int_rda kesmesi ile dizinin içine gelen string degeri atıp tekrar dizinin içini kontrol etcem bir led yakcam .