C/C++ 2007 6 18 1 C STL(1) 2 1.1............................................... 2 1.2 stdio................................................ 3 1.3.......................................... 10 2 11 2.1 sizeof...................................... 11 2.2............................................. 12 2.3 new delete........................................... 12 2.4.............................................. 14 2.5............................................ 15 2.6 void........................................... 15 1
1 C STL(1) 1.1 1.1.1 C C 1.1.2 C libc C C C++ STL(Standard Template Library ) libc libc C++ C STL libc STL iostream Algorithm libc STL string vector libc STL C/C++ *1 OS/ *2 *1 *2 2
1.2 stdio stdio STanDard Input/Output *3 cstdio stdio.h stdio fopen fclose fread fwrite fseek ftell feof fgets fgetc fputs fputc printf fprintf sprintf scanf fscanf sscanf 1 1 1 1 1.2.1 stdio stdio read.cpp 1 #i n c l u d e <c s t d i o > / s t d i o. h / 2 #i n c l u d e <iostream > 3 4 using namespace std ; *3 3
5 6 #d e f i n e READ FILE s t d i o r e a d. cpp 7 #d e f i n e SIZE BUFFER 256 8 9 10 i n t main ( void ) 11 { 12 FILE fp ; // 13 char buf [ SIZE BUFFER ] ; // 14 15 fp = fopen (READ FILE, rb ) ; // R e a d 16 17 i f ( fp==null) { // fopen ( ) NULL 18 cout << can t open the f i l e READ FILE << endl ; 19 return 1 ; 20 } 21 22 while (! f e o f ( fp ) ) { // EOF(End Of F i l e ) 23 i n t s i z e ; // 24 25 // b u f 26 s i z e = f r e a d ( buf, 1, SIZE BUFFER 1, fp ) ; 27 buf [ s i z e ] = \0 ; // 28 cout << buf ; // 29 } 30 31 f c l o s e ( fp ) ; // 32 return 0 ; 33 } fopen() FILE 2 b rb 4
r w a r+ w+ a+ 0 0 *4 feof() FILE EOF : End Of File 0 0 fopen / feof() clearerr() fread() 1 2 3 4 EOF fclose() 1 stdio write.cpp 1 #i n c l u d e <c s t d i o > / s t d i o. h / 2 #i n c l u d e <iostream > 3 4 using namespace std ; 5 6 #d e f i n e WRITE FILE hoge. txt 7 #d e f i n e SIZE BUFFER 256 8 9 10 i n t main ( void ) *4 b 5
11 { 12 FILE fp ; // 13 char buf [ SIZE BUFFER ] ; // 14 char c ; 15 16 fp = fopen (WRITE FILE, w+b ) ; // Read/ W r i t e 17 18 i f ( fp==null) { // fopen ( ) NULL 19 cout << can t open the f i l e WRITE FILE << endl ; 20 return 1 ; 21 } 22 23 // 24 f w r i t e ( hogehoge \ r \n,1, 10, fp ) ; // \ r \ n (CRLF) 25 26 f s e e k ( fp, 0,SEEK SET ) ; // 27 f g e t s ( buf, SIZE BUFFER, fp ) ; // 1 28 29 // 30 f p u t s ( \n, fp ) ; // \ n (LF) 31 32 // 1 1 33 f o r ( i n t i =0; buf [ i ]!= \0 ; i++) 34 fputc ( buf [ i ], fp ) ; // 1 35 36 f s e e k ( fp, 0,SEEK SET ) ; // 37 // 1 38 f o r ( i n t i =0; ( c = f g e t c ( fp ) )!= EOF; i++) 39 buf [ i ] = c ; 40 41 // f t e l l ( ) 42 buf [ f t e l l ( fp ) ] = \0 ; // 43 44 cout << buf ; 45 6
46 f c l o s e ( fp ) ; 47 } fwrite() fread() 1 2 3 4 fseek() 3 SEEK SET SEEK CUR SEEK END 2 *5 fseek(fp,0,seek SET) fseek(fp,10,seek END) 10 fgets() 1 2 3-1 EOF fgets() 1 NULL fputs() fputc() fgetc() 1 unsigned char int EOF ftell() 1.2.2 C printf scanf cin/cout formatio.cpp 1 #i n c l u d e <c s t d i o > / s t d i o. h / 2 3 using namespace std ; 4 5 #d e f i n e RW FILE hoge. txt 6 #d e f i n e SIZE BUFFER 256 *5 offset 7
7 8 i n t main ( void ) 9 { 10 FILE fp ; 11 char buf [ SIZE BUFFER ] ; 12 i n t i ; 13 unsigned u ; 14 15 p r i n t f ( h e l l o, world \n ) ; // 16 17 p r i n t f ( \n ) ; 18 s c a n f ( %s, buf ) ; // %s 19 20 // %s 21 p r i n t f ( %s \n, buf ) ; 22 23 // %d 1 0 d i g i t 24 p r i n t f ( \n ) ; 25 s c a n f ( %d,& i ) ; 26 p r i n t f ( %d \n, i ) ; 27 28 u = i ; 29 p r i n t f ( 8 %o\n, u ) ; // %o 8 30 p r i n t f ( 16 %04x\n, u ) ; // %x 1 6 31 // 0 4 32 33 fp = fopen (RW FILE, a+b ) ; 34 i f ( fp==null) { // fopen ( ) NULL 35 p r i n t f ( can t open the f i l e RW FILE \n ) ; 36 return 1 ; 37 } 38 f s c a n f ( fp, %s \n, buf ) ; 39 f p r i n t f ( fp, %s \n%i \n%x\n, buf, i, u ) ; 40 f c l o s e ( fp ) ; 41 } 8
%c 1 %g double %p 1.2.3 OS stdio OS 1 1 2 stdio fclose() fflush() 1.2.4 C 3 stdin stdout stderr 3 fopen() stdio FILE* printf( ) fprintf(stdout, ) STL cin cout stdin stdout stderr cerr cin/cout stdin/stdout cin/cout stdin/stdout cout/stdout cin/stdin 9
std::sync with stdio() cin/cout stdin/stdout C stdio STL iostream cin/cout fopen() 1.3 1.3.1 stdio.h cstdio C C++ stdio.h cstdio stdlib.h cstdlib c.h C++ include libc (cname) std (NAME.h) *6 C C++ include C++ include 1.3.2 Google 3 *7 strcpy+c C + + C + + Google Unix OS Cygwin Manpage man fopen fopen() man stdio Linux Manpage OS C Linux Windows *6 cstdio std using *7 10
2 2.1 sizeof sizeof sizeof.cpp 1 #i n c l u d e <iostream > 2 3 using namespace std ; 4 5 6 i n t main ( void ) 7 { 8 i n t i n t e g e r ; 9 i n t array [ ] = {9, 8, 7, 6, 5, 4, 3 }; 10 s t r u c t S { 11 char c ; 12 i n t i ; 13 double d ; 14 } ; 15 16 / / 17 cout << char / i n t / s t r u c t S << endl ; 18 cout << s i z e o f ( char ) << / << s i z e o f ( i n t ) << / 19 << s i z e o f ( s t r u c t S) << endl ; 20 21 cout << char / i n t / s t r u c t S << endl ; 22 cout << s i z e o f ( char ) << / << s i z e o f ( i n t ) << / 23 << s i z e o f ( s t r u c t S ) << endl ; 24 25 cout << i n t e g e r : << s i z e o f i n t e g e r << endl ; 26 cout << array : << s i z e o f array << endl ; 27 11
28 // ( / 1 ) 29 f o r ( i n t i =0; i < s i z e o f array / s i z e o f array [ 0 ] ; i++) 30 cout << array [ i ] << endl ; 31 32 return 0 ; 33 } 2.2 C/C++ (auto ) static *8 C/C++ 2.3 new delete new delete new.cpp 1 #i n c l u d e <iostream > 2 3 using namespace std ; 4 *8 C99 C++ C 1 12
5 6 i n t main ( void ) 7 { 8 s t r u c t S { 9 i n t i ; 10 char c [ 1 6 ] ; 11 } ; 12 13 // n e w 14 ch a r pchar = new ch a r ; 15 i n t pint = new i n t ; 16 s t r u c t S ps = new s t r u c t S ; 17 18 // 19 pint = 20000; 20 pchar = P ; 21 ps >i = 1 0 ; 22 ps >c [ 0 ] = a ; ps >c [ 1 ] = b ; ps >c [ 2 ] = c ; 23 ps >c [ 3 ] = d ; ps >c [ 4 ] = e ; ps >c [ 5 ] = \0 ; 24 25 cout << pint << endl ; 26 cout << pchar << endl ; 27 cout << ps >i << endl ; 28 cout << ps >c << endl ; 29 30 // d e l e t e 31 d e l e t e pchar ; 32 d e l e t e pint ; 33 d e l e t e ps ; 34 35 return 0 ; 36 } 13
2.4 new delete delete[] new array.cpp 1 #i n c l u d e <iostream > 2 3 using namespace std ; 4 5 6 i n t c r e a t e a r r a y ( i n t num) 7 { 8 i n t p = new i n t [num ] ; // new 9 10 f o r ( i n t i =0; i < num; i++) 11 p [ i ] = num i ; 12 13 return p ; 14 } 15 16 void d e s t r o y a r r a y ( i n t a [ ] ) 17 { 18 d e l e t e [ ] a ; // d e l e t e [ ] 19 } 20 21 i n t main ( void ) 22 { 23 i n t p ; 24 i n t num; 25 26 cout << << endl ; 27 c i n >> num; 14
28 29 p = c r e a t e a r r a y (num ) ; 30 31 f o r ( i n t i =0; i < num; i++) 32 cout << p [ i ] << endl ; 33 34 d e s t r o y a r r a y (p ) ; 35 36 return 0 ; 37 } sizeof 2.5 new delete new delete delete new C/C++ GC Garbage Collection *9 C/C++ GC BoehmGC * 10 2.6 void void void void * 11 *9 GC Java C# D C++ GC *10 http://www.hpl.hp.com/personal/hans Boehm/gc/ *11 C void C++ 15
void.cpp 1 #i n c l u d e <iostream > 2 3 using namespace std ; 4 5 6 i n t main ( void ) 7 { 8 void p ; // v o i d 9 i n t pint ; 10 i n t i = 234; 11 12 p = &i ; // i n t v o i d 13 14 pint = ( i n t )p ; // i n t 15 16 cout << pint << endl ; 17 18 return 0 ; 19 } new void 16