[fstream][C++] problem z tworzeniem pliku |
[fstream][C++] problem z tworzeniem pliku |
11.05.2011, 21:03:40
Post
#1
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) |
Witam, mam taki kod do tworzenia pliczków....
Chciałbym, żeby te pliki coś ważyły, np. każdy po 1MB
-------------------- LS Easter egg < |
|
|
11.05.2011, 22:14:43
Post
#2
|
|
Grupa: Zarejestrowani Postów: 749 Pomógł: 37 Dołączył: 3.10.2006 Ostrzeżenie: (0%) |
Czy ten temat pasuje do tematyki forum?
-------------------- |
|
|
12.05.2011, 03:28:15
Post
#3
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) |
Kod #include <fstream>
void main() { char temp_buff[4 /* <- tu ilość cyfr w liczbie plików + 1 (na NULL-a) */]; size_t advance_pos = (1024* 1024) - 1; for(int i = 500; i; --i) { _itoa_s(i, temp_buff, _countof(temp_buff), 10); std::ofstream out(temp_buff, std::ios::out); out.seekp(advance_pos); out.put(NULL); out.close(); } } |
|
|
12.05.2011, 09:22:36
Post
#4
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) |
Dzięki sprawdze
@up to jest hydepark! -------------------- LS Easter egg < |
|
|
12.05.2011, 14:36:51
Post
#5
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) |
Ale wywala błąd
Kod 10 C:\Documents and Settings\P4\Pulpit\virus.cpp `_countof' cannot be used as a function
-------------------- LS Easter egg < |
|
|
13.05.2011, 10:10:10
Post
#6
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) |
Jakiego kompilatora używasz?
To jest makro w visual c++, możesz jednak sobie je sam zdefiniować: Kod #define _countof(ar) (sizeof(ar)/sizeof(ar[0]))
|
|
|
13.05.2011, 21:20:16
Post
#7
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) |
Teraz wywala to:
Kod `_itoa_s' undeclared (first use this function) używam dev c++ Ten post edytował toaspzoo 14.05.2011, 20:37:21 -------------------- LS Easter egg < |
|
|
14.05.2011, 15:56:30
Post
#8
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) |
Lol - virus.cpp. Człowieku, daj spokój . Najpierw poznaj podstawy i się angielskiego naucz, a potem się bierz za wirusy. Podejrzewam, że _itoa_s jest jakąś wbudowaną funkcją kompilatora w Visual Studio. Dev C++ standardowo korzysta z g++, więc jak nie załączałeś żadnej dodatkowej biblioteki, to tam takiej funkcji pewnie nie ma. Z tego, co pamiętam, to bibliotece standardowej jest taka funkcja itoa i to pewnie o nią chodzi, więc sobie popraw nazwy.
-------------------- Sygnatura niezgodna z regulaminem.
|
|
|
14.05.2011, 20:36:18
Post
#9
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) |
_itoa_s jest bezpieczną wersją _itoa, która pozwala zapobiedz problemom z przepełnieniem buffora - tak zwane stack overflow. Jest ona częścią Visual C++ Runtime.
Ogólnie to polecam używanie tych bezpiecznych wersji zamiast zwykłych, szczególnie jak nie jesteś jeszcze doświadczony w C/C++ i nie wiesz jak obchodzić się z pamięcią. Żeby używać tych bezpiecznych wersji, podmień kompilator w swoim edytorze na VC++ albo użyj darmowego Visual C++ 2010 Express. |
|
|
14.05.2011, 20:39:19
Post
#10
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) |
Cytat Lol - virus.cpp. Człowieku, daj spokój Virus, nazwałem go tak, bo mój młodszy brat chciał A co do angielskiego, to powiem Ci, że nawet nieźle mi idzie, w tamtym roku zdawałem egzamin FCE Mam 15 lat Uups... too many emoticons ;D Ten post edytował toaspzoo 14.05.2011, 20:40:40 -------------------- LS Easter egg < |
|
|
14.05.2011, 20:47:46
Post
#11
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) |
Lol - virus.cpp. Człowieku, daj spokój . Najpierw poznaj podstawy i się angielskiego naucz, a potem się bierz za wirusy. Podejrzewam, że _itoa_s jest jakąś wbudowaną funkcją kompilatora w Visual Studio. Dev C++ standardowo korzysta z g++, więc jak nie załączałeś żadnej dodatkowej biblioteki, to tam takiej funkcji pewnie nie ma. Z tego, co pamiętam, to bibliotece standardowej jest taka funkcja itoa i to pewnie o nią chodzi, więc sobie popraw nazwy. A jak ma poznać podstawy inaczej niż eksperymentująć? ;-) Ciężko wymagać od 15stolatka wiedzy która pozwala na napisanie "poważnego" wirusa. Sam zaczynałem od tego i moim pierwszym programem też był "wirus", z tym, że ja zanim nie męczyłem innych to najpierw sam szukałem odpowiedzi i nie traktowałem forum w internecie jako wyszukiwarka Google czy indeks w książce (za moich czasów ;P). Ten post edytował nasty 14.05.2011, 20:49:19 |
|
|
15.05.2011, 13:18:21
Post
#12
|
|
Grupa: Zarejestrowani Postów: 778 Pomógł: 84 Dołączył: 29.07.2010 Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury. Ostrzeżenie: (20%) |
Początkowo szukałem w google, ale nie znalazłem satysfakcjonującego mnie przykładu ;
-------------------- LS Easter egg < |
|
|
15.05.2011, 18:22:45
Post
#13
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) |
Virus, nazwałem go tak, bo mój młodszy brat chciał A co do angielskiego, to powiem Ci, że nawet nieźle mi idzie, w tamtym roku zdawałem egzamin FCE Mam 15 lat Uups... too many emoticons ;D Okej. Skąd mogłem wiedzieć, ile masz lat . Ja w wieku ok. 14 lub 15 lat pierwszy komputer dostałem. W kwestii angielskiego miałem na myśli to: Cytat Kod `_itoa_s' undeclared (first use this function) Masz wyraźnie napisane, że funkcja _itoa_s jest niezdeklarowana, dlatego Twój program nie chce się skompilować. Jeżeli zdałeś FCE, to powinieneś to zdanie zrozumieć . W devie, a raczej w g++ taki kod się skompiluje, choć wywali jakieś warningi. Jedyne, co zrobiłem, to zamieniłem _itoa_s na itoa, zwracany typ danych funkcji main z void na int i dodałem return, bo z voidem w g++ się nie skompiluje. Kod #include <fstream>
#define _countof(ar) (sizeof(ar)/sizeof(ar[0])) int main() { char temp_buff[4 /* <- tu ilość cyfr w liczbie plików + 1 (na NULL-a) */]; size_t advance_pos = (1024* 1024) - 1; for(int i = 500; i; --i) { itoa(i, temp_buff, _countof(temp_buff)); std::ofstream out(temp_buff, std::ios::out); out.seekp(advance_pos); out.put(NULL); out.close(); } return 0; } Ten post edytował Speedy 15.05.2011, 18:25:19 -------------------- Sygnatura niezgodna z regulaminem.
|
|
|
15.05.2011, 19:19:02
Post
#14
|
|
Grupa: Zarejestrowani Postów: 634 Pomógł: 14 Dołączył: 27.05.2006 Skąd: Berlin Ostrzeżenie: (0%) |
Speedy - źle.
Ostatni parametr w itoa to nie jest rozmiar bufora a podstawa alfabetu liczby. http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/ Powinno być tak: Kod itoa(i, temp_buff, 10)
|
|
|
16.05.2011, 00:24:36
Post
#15
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) |
Rzeczywiście. Chciałem sprawdzić na szybko, czy działa, a nie pamiętałem dokładnie składni funkcji itoa, która przyjmuje o 1 parametr mniej, niż _itoa_s.
-------------------- Sygnatura niezgodna z regulaminem.
|
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 02:36 |