C语言写小说分段器

简介:    舍友在网上下载的txt小说,只有分章,但没有分段。这样阅读起来挺辛苦的,决定帮他一下。   上网搜索,却没有发现有分段器下载。于是我打开小说,仔细地察看了一下规律,发现每一小段虽然没有细分,但是之间是有间隔四个空格以上的。

   舍友在网上下载的txt小说,只有分章,但没有分段。这样阅读起来挺辛苦的,决定帮他一下。

  上网搜索,却没有发现有分段器下载。于是我打开小说,仔细地察看了一下规律,发现每一小段虽然没有细分,但是之间是有间隔四个空格以上的。那四个空格大概是原来的每一段的缩进。看到这里就有思路了,决定用C语言写个小说自动分段器。

  对C语言的文件操作我还很不熟悉,一直出错,而且由于自己写的调试代码的小问题,导致输出的结果在最后几行总是有乱码,调试了好久才发现问题。

  代码如下,希望大家多多指教:

Code:
  1. /* 
  2.   Name: 小说自动分段器  
  3.   Copyright: Copyright ? 2011 Geek_Soledad All Rights Reserved 
  4.   Author: Geek_Soledad 
  5.   Date: 01-04-11 22:42 
  6.   Description: 对网络上一些没有分段的小说进行自动分段, 
  7.             条件是原文中每段开头均有四个空格以上以作分段标志  
  8. */  
  9. #include <stdio.h>  
  10. #include <stdlib.h>  
  11. #include <time.h>  
  12.   
  13. #define READSIZE 10240  
  14.   
  15. FILE * fsave = NULL;  
  16.   
  17. /* 该函数是自动分段的具体实现 */   
  18. void devide ( char *buffer)   
  19. {  
  20.     char *temp = NULL;  
  21.     char *present = buffer;  
  22.     char *temp2 = NULL;  
  23.     temp = strstr( present, "    ");  
  24.     temp2 = strstr( present+4, "    ");  
  25.   
  26.     while ( temp && temp2 && *present){  
  27. //      puts("");  
  28.         fputc( '/n', fsave);  
  29.         for( ; present < temp2 && *present != '/0'; present++){  
  30.   //          putchar( *present);  
  31.             fputc(*present, fsave);  
  32.         }  
  33.         temp = strstr( present, "    ");  
  34.         temp2 = strstr( present+4, "    ");  
  35.     }  
  36.     while (*present) {  
  37.   //      putchar( *present);  
  38.         fputc( *present, fsave);  
  39.         present++;  
  40.     }  
  41. }  
  42.   
  43. int main(int argc, char *argv[])  
  44. {  
  45.     FILE * fload = NULL;  
  46.     char buffer[READSIZE] = "";  
  47.     char *isRead = NULL;  
  48.       
  49.     clock_t start ;  
  50.     clock_t end ;  
  51.       
  52.     fload = fopen( "test.txt""r");  
  53.     if ( NULL == fload) {  
  54.         printf("找不到文件/n");  
  55.         system("PAUSE");  
  56.         return EXIT_FAILURE;  
  57.     }  
  58.       
  59.     fsave = fopen( "save1.txt""a");  
  60.     if ( NULL == fsave) {  
  61.         printf("无法建立存档文件/n");  
  62.         system("PAUSE");  
  63.         return EXIT_FAILURE;  
  64.     }  
  65.       
  66.     while( NULL != fgets( buffer, READSIZE, fload) ){  
  67.         devide ( buffer);  
  68.         memset ( buffer, 0, sizeof(buffer));  
  69. //      isRead = fgets( buffer, READSIZE, fload);  
  70.     }   
  71.     fclose(fload);  
  72.     fclose(fsave);  
  73.       
  74.     end = clock();  
  75.     printf("共耗时%f秒/n", (double)( end - start) / CLK_TCK);  
  76.     system("PAUSE");  
  77.     return 0;  
  78. }  

 

目录
相关文章
|
C语言
c语言编程练习题:7-23 分段计算居民水费
c语言编程练习题:7-23 分段计算居民水费
314 0
|
C语言
C语言OJ项目参考(2279) 字符串分段(串)
2279: 字符串分段(串) Description 输入一个字符串,将其分段输出,分段符为除字母和数字之外的符号。 Input 输入一个字符串 Output 输出分段后的字符串 Sample Input** ad/adfa,,123d?#a1 Sample Output ad adfa 123d a1 参考解答: #include &lt;stdi
1395 0
|
C语言
《C语言及程序设计》实践参考——求解分段函数的值
返回:贺老师课程教学链接  项目要求 【项目2-求解分段函数的值】 #include&lt;stdio.h&gt; double f(double); //这一句是对自定义函数f的声明 int main( ) { double x; printf("请输入x的值:"); scanf("%lf", &amp;x); printf("解得:f(%.2f)=
1439 0
|
C语言 编译器
《C语言及程序设计》实践参考——分段函数求值
返回:贺老师课程教学链接  项目要求 【项目1:分段函数求值】从键盘输入x的值(要求为实型),根据公式1计算并输出x和y的值。 [参考解答] 解法1   #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main ( ) { double x, y; scanf("%lf", &amp;x); if (x&lt;
1694 0
|
C语言
《C语言及程序设计》实践参考——分段函数求值switch语句版
返回:贺老师课程教学链接  项目要求 【项目:分段函数求值switch语句版】从键盘输入x的值(要求为整型),根据公式1计算并输出x和y的值。要求用switch语句完成。[参考解答] 解法1:各分段的标准都为2的倍数,所以,构造表达式 t= x/2,根据t的取值决定switch分支; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int
2291 0
|
2月前
|
存储 C语言
`scanf`是C语言中用于按格式读取标准输入的函数
`scanf`是C语言中用于按格式读取标准输入的函数,通过格式字符串解析输入并存入指定变量。需注意输入格式严格匹配,并建议检查返回值以确保读取成功,提升程序健壮性。
948 0
|
4月前
|
安全 C语言
C语言中的字符、字符串及内存操作函数详细讲解
通过这些函数的正确使用,可以有效管理字符串和内存操作,它们是C语言编程中不可或缺的工具。
312 15
|
10月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
560 23
|
9月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
347 1
一文彻底搞清楚C语言的函数
|
10月前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
473 15
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】