folder Tahribat.com Forumları
linefolder C - C++
linefolder Bir Char Arraydaki String İfadeyi İçerisindeki Boşluklara Göre Sütunlara Ayırma



Bir Char Arraydaki String İfadeyi İçerisindeki Boşluklara Göre Sütunlara Ayırma

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    keshkesh
    keshkesh's avatar
    Kayıt Tarihi: 22/Eylül/2005
    Erkek

    arkadaşlar elimde

    123123123 Ali Veli 4 3.5

    tarzında girilmiş bir char dizisi mevcut. bu diziyi içindeki boşlukları kullanarak kolonlara ayırmak istiyorum. her kolon listele struct'una denk gelecek şekilde yapmam gerekiyor, internette bir kaç örnek buldum onlar sadece ekrana yazdırmak için kullanmışlar. pointer kullandıkları için ne yaptıysam sadece son veriyi kaydediyor diğerlerini kaydedemedim... 

    liste[0].no=123123123

    liste[0].ad=ali

    liste[0].soyad=veli

    liste[0].unk=4

    liste[0].not=3.5

     

    şeklinde yapabilmek istiyorum nasıl yapmam gerekiyor?

     

    [code] typedef struct ogrenciler{
               char ad[20];
               char no[10];
               char soyad[20];
               char unk;
               char not[4];
               }listele;

    int main(){listele liste[5];

    //alttaki kod sadece ekrana yazdırıyor bunu bir türlü struct tipine kaydedecek şekle getiremedim :(

    char str[80],*pch;
    sprintf(str,A[0].satir);
      pch = strtok (str," ,-");
      while (pch != NULL)
      {
        printf ("%s\n",pch);
        pch = strtok (NULL, " ,-");
      }

    }

    [/code]


    ...:::It Is BeGiNNiNG oF ThE eNd:::...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    keshkesh
    keshkesh's avatar
    Kayıt Tarihi: 22/Eylül/2005
    Erkek

    strchr ile içindeki boşlukları ayrı bir int dizisine alabilsem oda olur.


    ...:::It Is BeGiNNiNG oF ThE eNd:::...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    asagida yazicagim kod sana ornek olucaktir.

    Fakat senin yapinda(struct) cok acayibime giden seyler var. Tam olarak ne yapmaya calistigini bilmedigim icin de net konusamiyorum su anda ama
    yinede ne biliyim bir ogrencinin notu char array olmaz ki :s neyse kod bu sekilde

    #include <stdio.h>
    #include <string.h>
    
    
    typedef struct tagOGRENCI{
               char ad[20];
               char no[10];
               char soyad[20];
               char unk;
               char not[4];
               } OGRENCI, *POGRENCI;
               
    int main(int argc, char **argv)
    {
    	OGRENCI ogr;
    	
    	sscanf("123123123 Ali Veli 4 3.5",
    	"%s %s %s %c %s", ogr.no, ogr.ad, ogr.soyad, &ogr.unk, ogr.not);
    	
    	printf("%s %s %s", ogr.ad, ogr.soyad,  ogr.not);
    	return 0;
    }

     

     


    ..
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    keshkesh
    keshkesh's avatar
    Kayıt Tarihi: 22/Eylül/2005
    Erkek

    string araması yapılacak hacı o yuzden char. dosyadan satır satır okuyup bi struct dizisine atıyorum, oradan işte bu 2. struct a atacam ama işte beceremedim bi türlü

    yani atıyorum elimde 20 kişinin bilgisi var benim struct[0].no .... struct[19].no şeklinde struct dizisine almam gerek ondan sonra arama fonksiyonlarını ayarlicam :/. şimdi kafam allak bullak yarın bakabilirm anca koda teşekkürler ilgilendiğin için.


    ...:::It Is BeGiNNiNG oF ThE eNd:::...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    keshkesh
    keshkesh's avatar
    Kayıt Tarihi: 22/Eylül/2005
    Erkek

    haci o olayı çözdüm de bu kez de çırpı fonksiyonunda takıldım :S çırpı tablosunu oluşturdum, çatışmaları bağlantılama yöntemi ile çözdüm... ama arama fonksiyonu nasıl olacak onu çözemedim... tabloya bak cillop gibi ama arayacak fonksiyon yok :S

    no:2004438011 Toplam: 23 indis: 0 arka indis: -1
    no:2004638032 Toplam: 28 indis: 1 arka indis: -1
    no:2005638015 Toplam: 30 indis: 2 arka indis: -1
    no:2006138010 Toplam: 21 indis: 3 arka indis: -1
    no:2006538022 Toplam: 28 indis: 4 arka indis: 1
    no:2007138010 Toplam: 22 indis: 5 arka indis: -1
    no:2007638013 Toplam: 30 indis: 6 arka indis: 2
    no:2008238028 Toplam: 33 indis: 7 arka indis: -1
    no:2008338020 Toplam: 26 indis: 8 arka indis: -1
    no:2008338023 Toplam: 29 indis: 9 arka indis: -1
    no:2008638033 Toplam: 33 indis: 10 arka indis: 7
    no:2008738022 Toplam: 32 indis: 11 arka indis: -1
    no:2009638008 Toplam: 36 indis: 12 arka indis: -1
    no:2009638009 Toplam: 37 indis: 13 arka indis: -1
    no:2009638012 Toplam: 31 indis: 14 arka indis: -1
    no:2009638025 Toplam: 35 indis: 15 arka indis: -1
    no:2010638027 Toplam: 29 indis: 16 arka indis: 9
    no:2010638031 Toplam: 24 indis: 17 arka indis: -1


    ...:::It Is BeGiNNiNG oF ThE eNd:::...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    neden hic bisey anlamadim yahu :-)

    arama fonksiyonun bu yapilardan olusan dizi uzerinde mi arama yapicak ?
    eger oyleyse hangi kriterlere gore arama yapicaksin ?(yapidaki hangi elemanlari test ederek)


    ..
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Blitz
    Blitz's avatar
    Kayıt Tarihi: 30/Eylül/2007
    Erkek
    Vb de ne kolay dediğin iş ole hiç kasmadan split fonksiyonuyla olayı halledebiliyosun siz de onu evirip çevirip C ye uyarlayın artık :D hemen örnek verim :
    dim seninstring as string
    dim parça() as string
    seninstring = "Ali Veli 49 50"
    parça = Split(seninstring," ",-1)
    bundan sonra ise ;
    parça(0) , Ali değerini , parça(1) , Veli değerini , parça(2) , 49 ve parça(3) ise 50 değerini döndüren birer değişken olucak sende onlari ister ayrı ayrı kullanıcaksin ister for each döngüsüne sokup yazdırıcaksn sırayla yada naparsan yap işte :D saygılar sevgiler öpüldünüz :D (saat olmuş 6 buçuk. Hep uykusuzluktan dedim o ibnemsi cümleleri. Bu saat kadar yatmayan kafama sokim : |)

    validen
Toplam Hit: 1681 Toplam Mesaj: 7