fizban Mesaj tarihi: Şubat 25, 2009 Paylaş Mesaj tarihi: Şubat 25, 2009 A:16-34,37-67,69-125,127-130,132-204;B:501-624,627-638 altalta bunun gibi 50 tane satır var tabi, zaten böyle de değildi de aslında biraz revize edip bu hale getirdim. strtok falan gibi string işlemlerini sevmiyor ve beceremiyorum, istediğim şey şu şekilde bir çıktım olsun (variable lara koyiyim yani) A 16 34 A 37 67 A 69 125 A 127 130 A 132 204 B 501 624 B 627 638 nasıl yaparım sizce ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
di Mesaj tarihi: Şubat 25, 2009 Paylaş Mesaj tarihi: Şubat 25, 2009 C'yi pek hatirlamiyorum o yuzden ancak mantik olarak anlatabilecgim; Regular expression ile kasmak istemeyecegimden string'i once ";"e gore parse edip bir diziye atarim. Sonra dongu ile her dizi elemaninin ilk ":" e kadar olan kismini alip, geri kalanini tekrar "," ile parse ederim ve alt diziler olusturum. Sonra canim nasil istiyorsa dizerim. Biraz daha optimize etmek mumkun tabi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Şubat 25, 2009 Paylaş Mesaj tarihi: Şubat 25, 2009 pseudo olarak seyedeyim, istemesen de strtok kullanmalisin =) simdi once ;'den ayiracaksin. eline bir array gececek, array1 A:16-34,37-67,69-125,127-130,132-204 ve B:501-624,627-638 seklinde giden. sonra bir donguye alacaksin array1'i. bu donguye loop1 diyelim. bir strtok ile harf ve rakamlari ayiracaksin. bu sefer dongu icindeki alt arrayin (array2) A ve 16-34,37-67,69-125,127-130,132-204 olacak. arrayin ikinci bolumunu (array2[1]), strtok ile virgullere gore ayiracaksin. bu array'e de array3 diyelim. 16-34 37-67 69-125 gibi array3'u yine bir loop'a alacaksin, loop2 diyelim. her instance icin array2[0] ve array3[i]'yi yazdiracaksin. A 16-34 eger -'ler olmasin istiyorsan array3[i]'yi strtok yapip array2[0] array3[i][0] array3[i][1] olarak yazdiracaksin. A 16 34 Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
tunca Mesaj tarihi: Şubat 25, 2009 Paylaş Mesaj tarihi: Şubat 25, 2009 while(fscanf (dosya, "%c", array[i][k] != EOF)) { while ( fscanf (dosya, "%c", array[i][k] != "," || ";")) i++; k++; i=0; } böle bişi düşündüm ama olur mu emin deilim :P Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
tunca Mesaj tarihi: Şubat 25, 2009 Paylaş Mesaj tarihi: Şubat 25, 2009 tunca said: while(fscanf (dosya, "%c", array[i][k] != EOF)) { while ( fscanf (dosya, "%c", array[i][k] != "," || ";")) i++; k++; i=0; } böle bişi düşündüm ama olur mu emin deilim :P filedan alıyormuş gibi düşündüm tabi stringden demişsin o zaman while(length < lengths)) { while ( string[i] != "," || ";")) { string2[i][k] = string[length]; i++; length++; } length++; k++; i=0; } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Bathory Mesaj tarihi: Şubat 25, 2009 Paylaş Mesaj tarihi: Şubat 25, 2009 nece konusuyosunuz siz? :< Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
fizban Mesaj tarihi: Şubat 25, 2009 Konuyu açan Paylaş Mesaj tarihi: Şubat 25, 2009 tuncanın dediği yöntemle altından kalkamayacağımdan strtok a döndüm yine mum un köpeği olup, yalnız şöyle bir durum var; dikkat kod var #include <stdio.h> #include <string.h> #include <stdlib.h> int main () { FILE *input, *output; char line[256], line2[256], *modline, *modlinebkp; char **array, ***array2; char *pch, chid, *pch2, cset[] = "direction"; int start,end, i, j, k, pno, chnum, partnum; input = fopen("1avw2","r"); chnum=2; array=(char**)malloc(chnum*sizeof(char*)); array2=(char***)malloc(chnum*sizeof(char**)); for (i=0;i<chnum;i++) array2[i]=(char**)malloc(50*sizeof(char*)); // read the first 2 lines fgets(line,256,input); fgets(line,256,input); //printf("%s",line); partnum=atoi(&line[19]); for (i=0;i<partnum;i++) { //printf("nnn"); fgets(line,256,input); pch=strstr(line," "); modline=calloc((pch-line-5),sizeof(char)); memcpy(modline,line+7,pch-line-5); //puts(modline); pno=atoi(&line[5]); //printf("part no of line %dn",pno); pch = strtok (modline, ";"); j=0; while (pch != NULL) { array[j]=calloc((pch-modline),sizeof(char)); strcpy(array[j],pch); printf ("satir no %d parca no %d ::: %sn",i,j,array[j]); pch = strtok (NULL, ";"); j++; } for (k=0;k<j;k++) { chid=array[k][0]; printf("nn%cn%s",chid,array[k]); ////////////HATA strcpy(line2,array[k]); pch = strtok (line2, ","); while (pch != NULL) { pch2=strtok(pch,"-"); start=atoi(pch2); end=atoi(NULL); } printf("%d %c %d %dn",i,chid,start,end); } } return 0; } bu kod en son şu ////////////HATA şeklidne işaretlediğim kısımda segmentation fault veriyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sawer Mesaj tarihi: Şubat 25, 2009 Paylaş Mesaj tarihi: Şubat 25, 2009 strtoku kullanamna gerek yok.1 adet for'la strtokun yaptığı işi yapabilirsin. Edik:Biraz düşündümde 1 for'un içinde 1 while la yapılabilir. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
zgrw Mesaj tarihi: Şubat 25, 2009 Paylaş Mesaj tarihi: Şubat 25, 2009 basit olarak strtok olmaksızın açıklayayım; Bütün stringi char array'e oku 0. indexden sonuncu indexe kadar dön her bir indexi special karakter ile karşılaştır special karakter varsa değiştir ve ekrana bas yoksa harfi ekrana bas döngüyü bitir programdan çık Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar