开发者社区> 问答> 正文

C++下如何从读取文件内的数据并且排序然后输出到另外一个文件

C++下如何从读取文件内的数据并且排序然后输出到另外一个文件

展开
收起
a123456678 2016-03-06 09:55:57 3816 0
1 条回答
写回答
取消 提交回答
  • #include 
    #include 
    #include 
    #include
    
    #pragma warning (disable:4996)
    
    int create_a()//建立一个a.txt文件
    {
    srand((unsigned int)time(NULL));//通过time产生一个随机的整数,利用这个随机整数与srand的函数产生随机种子
    
    FILE *p = fopen("a.txt", "w");//以只写方式打开a.txt文件
    if (p == NULL)
        return 0;//如果打开失败,主函数返回
    
    for (int i = 0; i < 10; i++)
    {
        fprintf(p, "%d\n", rand());//将随机数写入文件
    }
    fclose(p);//操作完成之后关闭文件
    
    return 0;
    }
    
    int read_a(int array[], int len)//读取a.txt
    {
    FILE *p = fopen("a.txt", "r");//用只读方式打开a.txt文件
    if (p == NULL)//文件打开失败,主函数返回
    return 0;
    int i = 0;
    while (!feof(p) && len--)//如果读到文件结尾,那么循环退出
    {
    int value = 0;
    fscanf(p, "%d", &value);//从a.txt中读取一行,放入变量value中
    array[i] = value;//将value赋值给array[i]
    i++;
    }
    fclose(p);
    return i;//返回a.txt文件有多少行
    }
    
    void print_array(int array[], int len)//循环遍历数组,将数组每个成员都打印出来
    {
    for (int i = 0; i < len; i++)
    {
    printf("array[%d] = %d\n", i, array[i]);
    }
    }
    
    void bubble(int array[], int len)//用冒泡法排序
    {
    for (int i = 0; i < len; i++)
    {
    for (int j = 1; j < len - i; j++)
    {
    if (array[j] < array[j - 1])//如果array[j]小于他前面的元素,那么就和前面的元素调换位置
    {
    int tmp = array[j];
    array[j] = array[j - 1];
    array[j - 1] = tmp;
    }
    }
    }
    }
    
    int write_b(int array[], int len)//将数组array写入b.txt文件
    {
    FILE *p = fopen("b.txt", "w");//以只写的方式打开a.txt
    if (p == NULL)
    return;
    
    for (int i = 0; i < len; i++)//循环将数组中有效元素写入b.txt
    {
        fprintf(p, "%d\n", array[i]);
    }
    fclose(p);//关闭文件
    return 0;
    }
    
    int main()
    {
    int array[100] = { 0 };
    int len = read_a(array, sizeof(array) /sizeof(int));//读a.txt文件内容,并保存如数组array
    //print_array(array, len);
    bubble(array, len);//用冒泡将数组内容排序
    //printf("------------------------\n");
    write_b(array, len);//将排序后数组的结果写入b.txt
    getchar();
    return 0;
    }
    2019-07-17 18:54:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载