PDA

Tam Sürümünü Görmek İçin : mid, left, right


selami_32
15/02/2005, 21:19
saygıdeğer abilerim, basic'te mid, left, right fonksiyonları var metin düzenlemede mid fonksiyonu bir metinin istenen bir kısmını alıyor örneğin:
mid(metin,baslangic,sukadarharf) şeklinde bilen bilir bana bu fonksiyonun C++ versiyonu lazım ben baya uğraştım fazla ilerleme yapamadım abi bi bakın ya
char *mid(char *giren, int pozisyon, int uzunluk)
{
char *sonuc;
char *kelime;
int i,b;
b=0;

sonuc="";

i=0;
for (i=0;i<uzunluk;i++)
strcat(sonuc," ");

i=0;
// kelime_uzunlugu=strlen(giren);

for (i=pozisyon;i<pozisyon+uzunluk;i++)
{
sonuc[b]=giren[i];
b++;
}

return sonuc;
}
pek iyi çalışmıyor yapamıyom lütfen yardımcı olun.

saygılar.


acehreli
15/02/2005, 22:25
C++'ta en iyisi std::string turunu ve onun substr (substring--alt dizgi) adli islevini kullanmaktir:


#include <string>
#include <iostream>

using namespace std;

int main()
{
string const dizgi("merhaba dunya");
size_t const ceyregi = dizgi.length() / 4;

string const ortasi = dizgi.substr(ceyregi, ceyregi * 2);

cout << ortasi << '\n';
}


Sizin programda gorebildigim iki hata sunlar:

1) strcat'e gonderilen hedef dizgide sonucu tutabilecek kadar yer olmasi gerekir. 'sonuc'un gosterdigi yerde sifir tane karaktere yer var.

2) 'sonuc' isaretcisi, sabit dizgiler icin ayrilmis olan yerde tutulan "" dizgisini gosteriyor. Onun icine bir sey yazmaya calismak tanimsiz davranisa (undefined behavior) neden olur.

Ali

selami_32
16/02/2005, 07:59
çok teşekkürler dersime biraz daha çalışıyım

saygılar.