c/c++读取文件
1 #include <iostream> 2 #include <string> 3 #include <fstream> 4 5 int main() { 6 std::ifstream in_file("test.txt"); 7 std::string line; 8 while ( getline(in_file, line) ) { 9 std::cout << line; 10 } 11 }
不需要检查test.txt是否存在
下面的函数可以实现顺序读取文件,且限制每次读的最大行数
1 #include <stdio.h> 2 #include <iostream> 3 #include <stdlib.h> 4 5 const unsigned line_size = 4; 6 const unsigned max_line = 10; 7 8 bool read_file( FILE *p_file, unsigned line_num, unsigned data[] ) { 9 10 if ( line_num > max_line ) { 11 return false; 12 } 13 14 char buf[max_line][line_size]; 15 16 fread(buf, line_size, line_num, p_file); 17 18 for(int i = 0 ; i < line_num; i++) { 19 buf[i][line_size - 1] = 0; 20 data[i] = atoi(buf[i]); 21 } 22 23 return true; 24 } 25 26 bool write_file( FILE *p_file, unsigned line_num, unsigned data[] ) { 27 28 if ( line_num > max_line ) { 29 return false; 30 } 31 32 char buf[max_line][line_size]; 33 34 for(int i = 0 ; i < line_num; i++) { 35 itoa( data[i], buf[i], 10 ); 36 if ( i != line_num - 1 ) { 37 buf[i][line_size - 1] = '\n'; 38 } 39 } 40 41 fwrite( buf, 1, sizeof(buf) - 1, p_file ); 42 } 43 44 void buble_sort(unsigned data[], unsigned num) { 45 for( int i = 0; i < num; i++ ) { 46 for (int j = i + 1; j < num; j++ ) { 47 if ( data[i] > data[j] ) { 48 unsigned temp = data[i]; 49 data[i] = data[j]; 50 data[j] = temp; 51 } 52 } 53 } 54 } 55 56 int main() { 57 FILE *p_file = fopen("test.txt", "r"); 58 if ( NULL == p_file ) { 59 return -1; 60 } 61 62 unsigned data[10]; 63 for ( int j = 0; j < 5; j++ ) { 64 if ( read_file(p_file, 10, data) ) { 65 buble_sort(data, 10); 66 for ( int i = 0; i < 10; i ++ ) { 67 std::cout << data[i] << " "; 68 } 69 std::cout << std::endl; 70 char out_file_name[2]; 71 itoa(j, out_file_name, 10); 72 FILE *p_file_out = fopen(out_file_name, "w"); 73 write_file(p_file_out, 10, data); 74 fclose(p_file_out); 75 } 76 } 77 fclose(p_file); 78 79 }