C tarzı dizesi tüm boşlukları değiştirmek için bir yöntem yazın ve çözümünü anlamaya çalışan bazı yardım istiyorum:Bu görüşme soru karşılaştığınız
'ile bir dize tüm boşlukları değiştirmek için bir yöntem yazın % 20' . (Bir forumdan)
Çözüm:
char str[]="helo b";
int length = strlen(str);
int spaceCount = 0, newLength, i = 0;
for (i = 0; i < length; i++) {
if (str[i] == ' ') {
spaceCount++; //count spaces...
}
}
newLength = length + spaceCount * 2; //need space for 2 more characters..
str[newLength] = '\0';
for (i = length - 1; i >= 0; i--) {
if(str[i] == ' ') {
str[newLength - 1] = '0'; //???
str[newLength - 2] = '2';
str[newLength - 3] = '%';
newLength = newLength - 3;
} else {
str[newLength - 1] = str[i];
newLength = newLength - 1;
}
}
Bu program benim için çalışmıyor ... ben ilk kod dalmadan önce algoritmayı anlamak istiyorum.
Ah, o zaman bozuldu. Sonuç için daha fazla bellek ayırmaz. – thkala
true ... statik bir diziyi yeniden boyutlandırmaya çalışıyor ... ama sonra tekrar ..Bu soruyu çözmek için doğru algoritma ne olurdu? – maxpayne
Bunu derledim ve denedim; ve çalışıyor. Ama başka bir hafızanın ayak parmaklarına bastığın için kırılmış ve tehlikeli. Böyle şeyler yapma; Çalışma zamanında daha fazla yere ihtiyacınız varsa, er ya da geç 'malloc 'kullanmak zorunda kalacaksınız. – darioo