W jezyku Pascal znajde funkcje odwracajaca lanuch znakow. Czy w bibliotece standardowej znajduja sie taka funkcja? Przeszukalem i nie znalazlem i zamierzam sam sobie napisac, ale wole sie upewnic.
Pozdrawiam,
W jezyku Pascal znajde funkcje odwracajaca lanuch znakow. Czy w bibliotece standardowej znajduja sie taka funkcja? Przeszukalem i nie znalazlem i zamierzam sam sobie napisac, ale wole sie upewnic.
Pozdrawiam,
Wątpliwe. Napisz sam i tyle ;)
char* reverse(char* word) {
char* line;
if(( line = malloc(strlen(word) * sizeof(char)) ) == NULL )
return NULL;
int i = strlen(word)-1;
for(i; i >= 0; i--)
strncat(line, &word[i], 1);
return line;
}
Napisalem. Znalazlem tez w sieci info, ze taka funkcja owszem jest, ale dla kompilatorow Turbo C, z ktorych chyba juz nikt nie korzysta.
Straszna ta funkcja, dodatkowo z błędem.
Tu masz inną wersję:
char* reverse(const char* word)
{
char* line;
int c = strlen(word);
if( ( line = (char*)malloc(c + 1) ) == NULL ) return NULL;
char* p = line + c;
*p-- = 0;
while(*word) *p-- = *word++;
return line;
}
ale dla kompilatorow Turbo C
Skoro jest w Turbo C, jest duża szansa, że jest ta sama funkcja w C++ Builderze.
Z C99 też mało kto korzysta, a w tym jest ta funkcja...
Skoro jest w C99, powinna być w gcc, i to nie tylko w trybie C99.
Straszna ta funkcja, dodatkowo z błędem.
Twoja nie mniej straszniejsza... po co te wskaźniki, skoro można indeksować tablice?
Dzięki za konstruktywną krytykę.
char *inplace_reverse(char *buf)
{
for(char *s=buf,*e=s+strlen(s)-1;e<s;++s,--e) { char ch=*e; *e=*s; *s=ch; }
return buf;
}
char *duplicate_reverse(char *s)
{
return inplace_reverse(strdup(s));
}
[losowa nazwa] napisał(a)
Wątpliwe. Napisz sam i tyle ;)
Wątpliwa to jest twoja wiedza kolego. http://www.warpspeed.com.au/cgi-bin/inf2html.cmd?..\html\book\Toolkt40\XPG4REF.INF+275