Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilPetr Tábor
1
Práce se soubory a řetězci Přednáška č. 9
2
Práce se soubory v C (1) Knihovna #include Knihovna #include Ukazatel FILE *stream; Otevření souboru FILE * fopen(const char *filename, const char *mode); Módy otevření souboru – "w", "r", "a", "rb", "rt" Uzavření souboru int fclose(FILE *stream); Metody pro čtení a zápis int fscanf(FILE *stream, const char *format[, address,...]); int getc(FILE *stream); char *fgets(char *s, int n, FILE *stream); int fprintf(FILE *stream, const char *format[, argument,...]); int putc(int c, FILE *stream); int fputs(const char *s, FILE *stream);
3
Práce se soubory v C (2) Příklad použití: FILE *fw, *fr; int buff, i; fw = fopen("my_file.txt", "w"); for(i=0; i<10; i++) fprintf(fw, "%d \n", i); fclose(fw); fr = fopen("my_file.txt", "r"); for(i=0; i<10; i++) { fscanf(fr, "%d", &buff); printf("%d \n", buff); } fclose(fw);
4
Dialogy pro výběr souboru Komponenty ve složce Dialogs OpenFileDialog / SaveFileDialog if(openFileDialog->ShowDialog() == System::Windows::Forms::DialogResult::OK ) { MessageBox::Show( "Vybran soubor: " + openFileDialog->FileName, "", MessageBoxButtons::OK ); }
5
Řetězce v.NET (1) NTS, proměnné, konstantní ukazatele Typ System::String (dynamický typ do 2GB délky), nelze použít ve strukturách, je používán nativně funkcemi v.NET, ukládá řetězce v UNICODE (1 znak = 2B)
6
Řetězce v.NET (2) Pro typ System::String jsou definovány operátory + a =, není tedy třeba používat funkce jako tomu bylo u NTS System::String^ a; // nezinicializovana retezcova promenna System::String^ b = "1234"; // inicializovany retezec a = b + "5678"; // soucet retezcu a kopie
7
Konverze mezi řetězci Konverze z NTS na typ System::String pomocí konstruktoru s parametrem Pro konverzi z typu System::String na NTS je třeba použít funkci Marshal::StringToHGlobalAnsi, pozor je ve jmenném prostoru System::Runtime::InteropServices System::String ^ a; //.NET retezec char b[] = "1234"; // NTS a = gcnew System::String(b); // konstruktor s parametrem using namespace System::Runtime::InteropServices; System::String^ a = "1234"; //.NET retezec char b[5]; // NTS char *buf = (char*)Marshal::StringToHGlobalAnsi(a).ToPointer(); // konverze pomoci funkce StringToHGlobalAnsi strcpy(b,buf); // pouziti zkonvertovaneho retezce Marshal::FreeHGlobal((IntPtr)buf); // uvolneni zkonvertovaneho retezce z pameti
8
Příklad Vytvořte program, který rozdělí větu na slova. Následně: Vytiskněte větu s opačným pořadím slov. Vytiskněte původní větu s opačným pořadím písmen ve slovech. Abecedně seřaďte slova ve větě. Všechny funkce musejí být nezávislé na platformě (fungují pro konzolu i Windows)
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.