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 }

 

posted @ 2016-08-30 23:31  Ren.Yu  阅读(696)  评论(0编辑  收藏  举报