C - String Parçalamak [Yardım]
-
Merhabalar hepinize öncelikle :)
Elimizde bir string var diyelim ki;
char b[50];
Bunun içerisine veri olarak: "A55B2C41" yazıldı. Dolayısıyla b[0]="A", b[1]="5", b[2]="5", ... diye oldu.
ben bunu şu şekilde nasıl ayırabilirim:
operation="A" string olacak şekilde
operant=55 integer olacak şekilde
bazı işlemleri yaptıktan sonra;
operation="B" string olacak şekilde
operant=2 integer olacak şekilde.
Umarım açıklayıcı olmuştur. Çok teşekkür ederim şimdiden :)
-
Ulan G ingilzcede Ci gibi okunuyor ya, G STRİNG PARÇALAMAK DİYE OKUDUM Yeminle ahaha :D
İngilizce çalışmanın kötü yönleri ( nice yılları, nays yıllar diye okudum ya yine bir ara )
Hocam güldüm sayende sağol ya. -
ctype.h
-
valla konuyu bende g-string diye okuuyup gelenlerdenim vay sapık vay diyerekten geldim göt oldum :D
-
char b[] = "A23B55C2"; char str[2] = {0}, *ptr = b; int op; for (;*ptr;){ str[0] = *ptr; for (++ptr, op = 0; *ptr != '\0' & (*ptr >= '0' & *ptr <= '9'); ++ptr) op *= 10, op += (*ptr - '0'); //burda islemleri yapabilirsin printf("%s %d\n", str, op); }
-
GrN bunu yazdı
char b[] = "A23B55C2"; char str[2] = {0}, *ptr = b; int op; for (;*ptr;){ str[0] = *ptr; for (++ptr, op = 0; *ptr != '\0' & (*ptr >= '0' & *ptr <= '9'); ++ptr) op *= 10, op += (*ptr - '0'); //burda islemleri yapabilirsin printf("%s %d\n", str, op); }
Çok teşekkür ederim. Tam olarak istediğim şey bu fakat bunu pointer kullanmadan nasıl yapabilirim. Biraz açıklayabilir misin :) Sağol tekrar
-
g-string mi hobaa yanlış alarm size kolay gelsin
-
char b[] = "A23B55C2"; char str[2] = {0}; int op; for (int i = 0; b[i]; ){ str[0] = b[i]; for (++i, op = 0; b[i] != '\0' & (b[i] >= '0' & b[i] <= '9'); ++i) op *= 10, op += (b[i] - '0'); //burda islemleri yapabilirsin printf("%s %d\n", str, op); }
hocam pointer kullanmadan da yukaridaki sekilde yapabilirsin elbettehocam str isimli 2 elemanli char arrayin var , bunun birincisi senin operation code dedigin karakteri tutuyo digeri de '\0' , boylece her operation u string seklinde elde etmis oluyosun. icteki for dongusude sayi olan karakterleri '0' <= b[i] <= '9' toplayip op degiskenine integer olarak atiyo. icteki for dongusunden ya yazinin sonuna gelindigi icin '\0', yada '0', '9' araligindan sasildiginda cikiliyo. eger yazinin sonuna gelindiysek , distaki for bunu kontrol ediyo zaten, eger gelinmediyse de bi sonraki karakter senin siradaki operation code ' un oluyo.
hayatimda bole kotu bi aciklama gormedim :), ins anlatabilmisimdir
-
GrN bunu yazdı
char b[] = "A23B55C2"; char str[2] = {0}; int op; for (int i = 0; b[i]; ){ str[0] = b[i]; for (++i, op = 0; b[i] != '\0' & (b[i] >= '0' & b[i] <= '9'); ++i) op *= 10, op += (b[i] - '0'); //burda islemleri yapabilirsin printf("%s %d\n", str, op); }
hocam pointer kullanmadan da yukaridaki sekilde yapabilirsin elbettehocam str isimli 2 elemanli char arrayin var , bunun birincisi senin operation code dedigin karakteri tutuyo digeri de '\0' , boylece her operation u string seklinde elde etmis oluyosun. icteki for dongusude sayi olan karakterleri '0' <= b[i] <= '9' toplayip op degiskenine integer olarak atiyo. icteki for dongusunden ya yazinin sonuna gelindigi icin '\0', yada '0', '9' araligindan sasildiginda cikiliyo. eger yazinin sonuna gelindiysek , distaki for bunu kontrol ediyo zaten, eger gelinmediyse de bi sonraki karakter senin siradaki operation code ' un oluyo.
hayatimda bole kotu bi aciklama gormedim :), ins anlatabilmisimdir
Çok güzel anlattın hocam teşekkür ederim :) Bu arada ne kadar sapık varmış arkadaş ya :D
-
while (str[i]!='\0'){ op=str[i]; i++; while (isdigit(str[i])){ number*=10; number+=(str[i]-'0'); i++; } printf("%c : %d \n" , op, number); number=0; }
Bu da benim yazdığım kod olsun bakalım bu bilgiler ışığında (: Elbet bir gün bir insan evladının işine yarar