C - C++
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
-
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]
-
strchr ile içindeki boşlukları ayrı bir int dizisine alabilsem oda olur.
-
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; }
-
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.
-
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 -
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) -
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 : |)