| | |
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Autor | Správa |
---|
Registrovaný: 23.05.09 Prihlásený: 16.01.18 Príspevky: 95 Témy: 39 Bydlisko: Michalovce |
Preco pri zapise do pola program spadne?? je to v C
Kód: char * foo( char* str ) { str[5]='5'; //Pada to presne tu return str; } int main ( int argc, char * argv [] ) { char* r; r = replaceNumbers ( "bla bla bla 12 bla bla 12. bla bla .12 blabla"); printf(r);
som z toho chory
RUN FAILED exit value 1
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 16.11.2011 21:59 | |
|
Ten reťazec je konštantný a teda ty v ňom nemôžeš nič meniť, pretože to je veľmi často v pamäti, kde sa údaje nemôžu zapisovať.
|
|
Registrovaný: 23.05.09 Prihlásený: 16.01.18 Príspevky: 95 Témy: 39 Bydlisko: Michalovce | Napísal autor témy Siriuse: 16.11.2011 23:07 | |
|
nerozumiem tomu celkom, ako to ze je retazec konstantny, co to znamena? a nevedel by si mi poradit ako by som to mohol vyriesit?
// pridané po 1 hodine 1 minúte od posledného príspevku
mohol by som to vyriesit tak, ze si alokujem nove dynamicke pole s velkostou str a po jednom do neho prevediem hodnoty, ale vlastne mi to uz netreba takze, dakujem krasne, ale mozno by to mohol niekto konkretnejsie vysvetlit, pretoze stale nerozumiem preco je dane pole konstantne
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 17.11.2011 11:47 | |
|
Zaváňa mi tu FIT ČVUT Aká si škola?
Predpokladám, že funkcia foo má byť replaceNumbers...
Nejde to preto, že ten reťazec je konštantný. Konštantný je preto, že nemá svoje miesto v pamäti. Predal si ho funkcii ako parameter, takže sa vytvoril na zásobníku a odtiaľto ho môžeš len čítať.
Pozri sa na hlavičku funkcie. Vraciaš ukazateľ na reťazec. To znamená, že musíš ten reťazec vo funkcií vytvoriť v pamäti (malloc) a vrátiť ukazateľ naň. Potom si samozrejme povinný ho aj uvoľniť (free)
Takže tvoje riešenie je správne a asi aj jediné
|
|
Registrovaný: 23.05.09 Prihlásený: 16.01.18 Príspevky: 95 Témy: 39 Bydlisko: Michalovce | Napísal autor témy Siriuse: 17.11.2011 14:45 | |
|
Uz tomu rozumiem, vdaka. vyriesil som to trocha inac ako som pisal ale podobne. Vsetko funguje. Zatial, ale uvidime co na to povie PROGTEST
|
|
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| BSOD pri zápise na USB v Ostatné zariadenia | 7 | 456 | 17.04.2021 15:33 buko1 | | Docasne mrznutie vsetkeho pri zapise na SSD v SSD disky | 8 | 640 | 09.12.2016 22:32 tatko Tom | | Stuhnutie Windows 7 pri čítaní/zápise na HDD v Operačné systémy Microsoft | 4 | 747 | 18.10.2009 8:02 LHMG | | Auto.zmena zlozky C:/program files/xxx na inu pri instalacii v Operačné systémy Microsoft | 6 | 535 | 07.06.2006 23:44 Ahmed | | problem pri zapise do bunky, kt. je zdroj. pre graf v Ex2007 v Delphi, Visual Basic | 0 | 794 | 22.07.2008 14:44 vlk | | deklaracia pola - C v Assembler, C, C++, Pascal, Java | 4 | 997 | 12.11.2010 13:40 mack0 | | C naplnenie pola v Assembler, C, C++, Pascal, Java | 3 | 850 | 11.12.2011 15:34 Fico | | Veľkosť poľa v C++ v Assembler, C, C++, Pascal, Java | 1 | 2154 | 18.11.2007 17:19 johny128 | | c dynamická alokácia dvojrozmerného poľa v Assembler, C, C++, Pascal, Java | 4 | 511 | 02.05.2017 20:47 BX | | testovanie prvku pola char [C++] v Assembler, C, C++, Pascal, Java | 6 | 482 | 06.07.2010 8:09 koso | | prevod pola na dekadicke cislo (C) v Assembler, C, C++, Pascal, Java | 3 | 284 | 23.03.2013 10:20 BX | | [C] Výpis zo súboru do pola v Assembler, C, C++, Pascal, Java | 2 | 441 | 05.11.2012 20:53 ado130 | | c++/cli lexicograhical_compare padá na rovnakých údajoch v Assembler, C, C++, Pascal, Java | 0 | 341 | 18.07.2014 12:24 marian_r | | funkcia pre vypis dvojrozmerneho pola v C v Assembler, C, C++, Pascal, Java | 9 | 1444 | 10.07.2011 12:47 v.tkac | | nacitanie obsahu suboru do pola v C v Assembler, C, C++, Pascal, Java | 5 | 2138 | 28.04.2011 10:39 Fico | | Problém s načítaním znakov do poľa - C v Assembler, C, C++, Pascal, Java | 7 | 501 | 18.11.2017 10:33 alvar |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|