/* THE PROGRAM IS MADE BY PYY */
/*----------------------------------------------------------------------------//
Copyright (c) 2011 panyanyany All rights reserved.
URL : http://acm.hdu.edu.cn/showproblem.php?pid=1277
Name : hdu 1277 ( 全文检索 )
Date :
Time Stage :
Result:
Test Data:
Review:
此程序为将记事本中的空格,回车,制表符删除。
1. 记事本中 ANSI 编码和 UINCODE 并存。比如,有两种空格模式,遇到 ' ' 时,是ANSI
的空格模式,遇到 ' ' 时,是中文空格模式,上一种也叫做半角模式,下一种也叫做
全角模式。
而对于 '\t' 和 '\n' 则无此区分。
因此需要在判断的时候加入全角空格的判断,其值为 -95,不过,会出现这样的情况,
比如在一句话的结尾,往往有这样的符号 '!”' (单引号内的为两个连续的中文符号),
全角的 '!' 低字节和 全角的 '”' 高字节均为 -95,即那两个连续中文字符的内存编码
为: -93,-95,-95,-97, 若在写程序的时候,一味地根据 -95 的特征来判断,则会出现把
中间那两个字节删除的情况,剩下的两个字节将组成新的全角字符 '1'。
因此,为了避免这种情况的发生,我想出的方法就是在遇到中文字符或全角字符的第
一个字节时(此字节的值小于0且不等于-95),便紧接着读取下一个字节到输出文件中
比如,在遇到上述的'!”'两个字符时,程序先遇到了-93,则判断其为中文或全角
字符,于是紧接着将-95也输出到文件中。如此一来便不会出现如上所述的误判的情况了。
2. 还有一个问题是,我使用VC6.0进行编程的时候,在有 '//(2)' 标记的位置,我是先
有这么句话的 t = fgetc (in) ; 然后才将 t == -95 放在判断位置。一开始我曾试着
把它们整合成一句话,即:if (fgetc (in) == -95) ,但我发现这样是行不通的,程序
会无法进行第二个 -95 的判断,从而使这段清除全角空格的语句失效。但是,如果改成
if ((t = fgetc (in)) == -95) 则程序能正常使用。这是个很奇怪的问题,我一直无法
搞明白,希望有人能指点一二,不胜感激!
//----------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#define ISSPACE(c) ((c) == '\t' || (c) == ' ' || (c) == '\n' || (c) == '\r')
char text[100000] ;
int main ()
{
FILE *in, *out ;
int i ;
char c = 0, t ;
in = fopen ("in.txt", "r") ;
out = fopen ("out.txt", "w") ;
while (!feof (in))
{
c = fgetc (in) ;
// printf ("%d, ", c) ;
if (!ISSPACE (c))
{
if (c == -95)
{
// printf ("c == -95 ") ;
t = fgetc (in) ;
if (t == -95) // (2)
{
// printf ("&& fgetc == %d \n", t) ;
continue ;
}
fseek (in, -1, SEEK_CUR) ;
// printf ("fgetc != -95\n") ;
}
// printf ("%d", c) ;
fputc (c, out) ;
if (c < 0) // 将中文字符或全角字符的第二个字节也一并输出到文件中
fputc (fgetc (in), out) ;
}
// system ("pause") ;
}
fclose (in) ;
fclose (out) ;
return 0 ;
}
分享到:
相关推荐
本文档主要介绍了三种不同的方法来移除字符串中的空格和回车符: 1. **移除所有空格**:该方法会遍历整个字符串,并移除所有出现的空格。 2. **移除末尾空格**:只移除字符串末尾的空格。 3. **移除回车符**:同样...
要删除字符串中的所有空格和回车符,可以使用正则表达式 `/[\s\n\r]+/g`。这里的正则表达式的含义如下: - `\s`:匹配任何空白字符,包括空格、制表符、换页符等。 - `\n`:匹配换行符。 - `\r`:匹配回车符。 - `+...
在Word文档处理中,有时我们需要清理不必要的回车符、空格和空行,以优化文档结构和节省存储空间。在批量删除这些元素时,可以利用Word的“替换”功能高效地完成任务。以下是如何操作的详细步骤: 1. **批量删除...
如果粘贴过来的文本中含有多余的空行,同时文档又很大,那么一个个用手工的方式删除空行的办法实在是太累人了。而且打印时又太浪费墨和打印纸,有没有较便捷的方式呢?可以使用 Word 的替换功能来清除多余的空格和...
脚本功能:此脚本用于删除文本中的所有空格,包括空格、制表符和换行符。 输入文件:input.txt - 包含待处理文本的文件。 输出文件:Output.txt - 存储处理后无空格文本的文件。 运行方式: 在命令行环境中,确保...
本文档主要讲解了批量删除 Word 中的空行和回车的方法,並对相关知识点进行了详细的解释。 1. 批量删除 Word 中的软回车符号 在 Word 中,软回车符号可以使用 ^l 来表示。要删除软回车符号,可以使用 Word 的替换...
3. **删除空格和回车**:在TXT文件中,空格和回车用于格式化文本,但在某些情况下,如制作纯文本电子书时,这些字符可能是多余的。这个工具可以方便地删除这些空白字符,使文本更加紧凑,减小文件大小,同时不影响...
如果只是想删除文本内的空格而不是段落之间的空行,可以考虑使用“查找和替换”的高级选项,更具体地设置查找和替换规则。 此外,Word还有其他一些高级文本处理功能,如查找和替换特定格式、使用通配符进行复杂搜索...
可以去掉 空格和 换行 void CMainFrame::OnTrim() { FILE *pfile=fopen("a.txt","r+"); //CString strin("s"); //fwrite(strin,1,1,pfile); fseek(pfile,0,SEEK_END); int len=ftell(pfile); char * buf; ...
删除Word中的多余空格和空行 在处理从网页上复制的文字时,经常会遇到多余的空格和空行的问题,这些多余的空格和空行不仅影响文字的排版美观,也会给后续的编辑和排版带来很大的麻烦。下面将介绍如何删除Word中的...
在JavaScript和jQuery中,有时我们需要清理用户输入的数据,去除其中的空格、回车和换行符,以确保数据的整洁性和一致性。以下是一些示例代码,展示如何使用正则表达式实现这一功能。 首先,让我们理解这些代码的...
WPS 或 Word 的替换功能不仅可以用于清除回车符和换行符,还可以用于替换文档编辑中的空格、特殊字符等。这些功能可以使我们的文档编辑更加方便和高效。 在本文中,我们详细介绍了批量清除 WPS 和 Word 文档中回车...
在提供的文件中,详细介绍了如何使用Java代码去除字符串中的空格、回车符、换行符和制表符。这个过程通常被称为去除字符串中的空白字符。文件中提到了两种方法:一种是利用正则表达式,另一种是使用字符串的replace...
通过以上步骤,可以有效地去除Word文档中的多余空格和空行,使得文档更加规整,便于阅读和编辑。在处理从网页复制的内容时,这种方法尤其有用,因为它可以消除潜在的格式问题,使内容更容易管理和编辑。
"删除文本里的空行"这个主题就是关于如何有效地去除这些不必要的空白行,从而让文本数据更加整洁和易于处理。 首先,我们要理解什么是空行。在文本文件中,空行通常是由连续的两个换行符(\n)或者在某些情况下是...
Python提供了丰富的内置函数和方法来处理文本中的空格,包括删除、替换、分割和标准化空格。让我们深入探讨一下这些知识点。 首先,我们要了解在Python中常见的空格类型:普通空格(` `)、制表符(`\t`)、换行符...
接下来,jQuery代码将监听文本框的`keyup`事件,当用户键入内容并按下空格或回车时,将新输入的文本转换为标签。这通常涉及以下步骤: 1. **获取输入值**:使用`val()`函数获取文本框的当前值。 2. **检查输入内容*...
本资源涉及“如何快速删除word文档中的空行”。通过“替换”的方法,可以去除文档中多余的空行。其中根据产生空行的三种原因:一、硬回车造成的空行;...三、有硬空格的空行 的不同删除方法,在本资源中有具体介绍
网上测试了很多,大多数都不满意。于是自己编写了一个。VBA利用通配符或正则表达式删除Word中选中部分的多余空行,支持把手动换行符替换为段落标记处理。