当前位置:   article > 正文

C语言往文件内写入随机数并进行排序_c语言随机生成一个数进行排顺序

c语言随机生成一个数进行排顺序

创建文本文件并在该文件内写入100个0-100的随机数,然后对该文件内的随机数进行从小到大的排序,源码如下:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5. #define MAX 100
  6. int file_write(void)
  7. {
  8. FILE *fp = NULL;
  9. fp = fopen("RandomSort.txt", "w");
  10. if(fp == NULL)
  11. {
  12. perror("File_write fopen error");
  13. return -1;
  14. }
  15. srand((unsigned int)time(NULL));
  16. int num = 0;
  17. for(int i = 0; i < MAX; i++)
  18. {
  19. num = rand() % 100;
  20. fprintf(fp, "%d\n", num);
  21. }
  22. fclose(fp);
  23. fp = NULL;
  24. return 0;
  25. }
  26. int file_read(void)
  27. {
  28. FILE *fp = NULL;
  29. fp = fopen("RandomSort.txt", "r");
  30. if(fp == NULL)
  31. {
  32. perror("File_read fopen error");
  33. return -1;
  34. }
  35. int buf[1024];
  36. int times = 0;
  37. while(1)
  38. {
  39. fscanf(fp, "%d\n", &buf[times]);
  40. times++;
  41. if(feof(fp))
  42. {
  43. break;
  44. }
  45. }
  46. int total = times;
  47. int temp;
  48. for(int i = 0; i < total - 1; i++)
  49. {
  50. for(int j = 0; j < total - 1 - i; j++)
  51. {
  52. if(buf[j] > buf[j + 1])
  53. {
  54. temp = buf[j];
  55. buf[j] = buf[j + 1];
  56. buf[j + 1] = temp;
  57. }
  58. }
  59. }
  60. fclose(fp);
  61. fp = fopen("RandomSort.txt", "w");
  62. for(int i = 0; i < MAX; i++)
  63. {
  64. fprintf(fp, "%d\n", buf[i]);
  65. }
  66. fclose(fp);
  67. fp = NULL;
  68. return 0;
  69. }
  70. int main(void)
  71. {
  72. file_write();
  73. file_read();
  74. return 0;
  75. }

分析:
① file_write()函数

  1. int file_write(void)
  2. {
  3. FILE *fp = NULL;
  4. fp = fopen("RandomSort.txt", "w");
  5. if(fp == NULL)
  6. {
  7. perror("File_write fopen error");
  8. return -1;
  9. }
  10. srand((unsigned int)time(NULL));
  11. int num = 0;
  12. for(int i = 0; i < MAX; i++)
  13. {
  14. num = rand() % 100;
  15. fprintf(fp, "%d\n", num);
  16. }
  17. fclose(fp);
  18. fp = NULL;
  19. return 0;
  20. }

该函数先创建了一个文本文件RandomSort.txt并以只写的方式打开,设置好随机数种子srand(),rand()%100是将随机数限制在100以内,并写入RandomSort.txt,结果如下图(这里只显示一部分数据):

② file_read()函数

  1. int file_read(void)
  2. {
  3. FILE *fp = NULL;
  4. fp = fopen("RandomSort.txt", "r");
  5. if(fp == NULL)
  6. {
  7. perror("File_read fopen error");
  8. return -1;
  9. }
  10. int buf[1024];
  11. int times = 0;
  12. while(1)
  13. {
  14. fscanf(fp, "%d\n", &buf[times]);
  15. times++;
  16. if(feof(fp))
  17. {
  18. break;
  19. }
  20. }
  21. int total = times;
  22. int temp;
  23. for(int i = 0; i < total - 1; i++)
  24. {
  25. for(int j = 0; j < total - 1 - i; j++)
  26. {
  27. if(buf[j] > buf[j + 1])
  28. {
  29. temp = buf[j];
  30. buf[j] = buf[j + 1];
  31. buf[j + 1] = temp;
  32. }
  33. }
  34. }
  35. fclose(fp);
  36. fp = fopen("RandomSort.txt", "w");
  37. for(int i = 0; i < MAX; i++)
  38. {
  39. fprintf(fp, "%d\n", buf[i]);
  40. }
  41. fclose(fp);
  42. fp = NULL;
  43. return 0;
  44. }

该函数以只写的方式打开文本文件RandomSort.txt,使用fscanf()将文件内的"%d\n"形式的数据一个一个取出并存放到buf数组里面,知道结尾处if(feof(fp))为真跳出循环,接着对存放到buf的这些随机数进行从小到大的排序,然后关闭文件并重新以只写的方式打开文本文件RandomSort.txt并将这些数据重新写入,结果如下图(这里只显示一部分数据)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/608116
推荐阅读
相关标签
  

闽ICP备14008679号