Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj, chcem sa spytat na to kde presne robim chyby. Malo by to otacat pole , viem ze tam budu isto chyby v pointroch , memory leak asi tiez.
Dik
char * otoc(char *arrays ){ //funkcia na otocenie pola
int a = 0;
char *pole;
pole = malloc(sizeof(char)*strlen(arrays));
for (int i = strlen(arrays); i>0; i++){
pole[i] = arrays[a];
a++;
}
}
char* main(){ // ma vratit otocene pole
char * arrays = "retazec";
return otoc(arrays);
}
Offline
Nezkoušel jsem to přepsat, ale co tam vidím od oka za problémy:
1) main nevím proč by měla mít návratovou hodnotu typu char* když jako vrací číslo výsledku (succes, errory..).
2) (int i = strlen(arrays); i>0; i++) ..nastavíš i velikost pole a pak to ještě zvětšuješ? Tím přetečeš mimo to pole hned prvním průchodem smičkou.
Buď i = 0 a přičítáš nebo i = velikost a odčítáš. Dle tvého zdrojáku or (int i = strlen(arrays); i>=0; i--)
Velikost alokovaná se zdá být v pořádku, ale jistý si nejsem. mohl bys to vytvořit bez pointeru jako pole charů o té velikosti:
char pole [strlen(arrays)]
Edit: úprava pro čitelnost.
Offline

a co bys chtěl operačnímu systému vracet? bajku?
Návratová hodnota main() slouží k vrácení chybového kódu, zda se program provedl nebo neprovedl správně, a pokud neprovedl, tak případně proč (resp. co se stalo)
Offline
Zdravím,
co se týče otočení řetězce, může se hned použít funkce strrev().
Pokud si budeme chtít udělat vlastní funkci, tak nebude vlastně ani nic vracet - (pouze předáme pole), mohlo by se jednat o něco podobného:
void reverse(char s[])
{
int c, i, j;
for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}Nesmíme zapomenout vložit knihovnu #include <string.h>, která pracuje s funkcí jako je třeba strlen().
Offline