用C中的单个空格替换换行符

时间:2011-06-29 09:00:47

标签: c

我无法用单个空格替换文件中的换行符。 比如说文件包含

  

书籍是由纸张,羊皮纸或其他各种材料制成的书面,印刷,插图或空白纸张的集合或集合。
  书籍也可以指文学作品或这类作品的主要部分。在图书馆和信息科学中,一本书被称为专着   买卖书籍的商店是书店或书店。书籍也可以从图书馆借来。

在句子的开头有一个换行符(一本书是一套....)并且在开始下一行之前还有一个换行符(书籍也可以引用..)

我需要将此换行符替换为单个空格,如下所示

  

书籍是由纸张,羊皮纸或其他各种材料制成的书面,印刷,插图或空白纸张的集合或集合,通常固定在一起铰接在一侧。书籍也可以指文学作品,或这种工作的主要部门。在图书馆和信息科学中,一本书被称为专着。书籍买卖的商店是书店或书店。书籍也可以从图书馆借来。

内容将在.csv文件中。在代码级别,我将读取该文件。因此,在使用fgets读取文件时如何处理换行符。这是我阅读文件内容的方式。

int FileRead(char *inputfile)
{
    char buf[400]; 
    if ((fileinfo=fopen(inputfile,"r"))==NULL)


    /* read header row and ignore it */
    if (fgets(buf,400,fileinfo)!=NULL)
    {
        printf("read row");
        rowsread ++;
    }
    else
    {
        fclose(fileinfo);
        return;
    }

    while (fgets(buf,400,fileinfo)!=NULL)              /* read till EOF   */
    {
        rowsread ++;
        ............
        ............
        ............

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

一次只读取一个字符并测试'\n' - 如果字符不等于'\n',则输出未修改,否则用空格替换。

答案 1 :(得分:0)

如果您的问题是用空格替换换行符,则C中的常用方法要容易得多。但我看不出你指定的问题如何与CSV格式的文件集成(一个完整的例子会很精彩) - 所以这可能只是作为部分答案。

一般规则是:读入一个字符。检查它。用它做点什么:

int c;
FILE *f;

while((c=getc(f)) != EOF) {
    if (c=='\n') {
        putchar(' ');
    } else {
        putchar(c);
    }
}

对于每种特殊情况,您都会添加另一个else if ()块。 (或者使用switch;所有这些break语句都会分散注意力。)

答案 2 :(得分:0)

根据您的操作系统,换行符可能是:
MS Windows中的\r\n
Linux中的\n 和我记得的Mac中的\r一样。