我无法用单个空格替换文件中的换行符。 比如说文件包含
书籍是由纸张,羊皮纸或其他各种材料制成的书面,印刷,插图或空白纸张的集合或集合。
书籍也可以指文学作品或这类作品的主要部分。在图书馆和信息科学中,一本书被称为专着 买卖书籍的商店是书店或书店。书籍也可以从图书馆借来。
在句子的开头有一个换行符(一本书是一套....)并且在开始下一行之前还有一个换行符(书籍也可以引用..)
我需要将此换行符替换为单个空格,如下所示
书籍是由纸张,羊皮纸或其他各种材料制成的书面,印刷,插图或空白纸张的集合或集合,通常固定在一起铰接在一侧。书籍也可以指文学作品,或这种工作的主要部门。在图书馆和信息科学中,一本书被称为专着。书籍买卖的商店是书店或书店。书籍也可以从图书馆借来。
内容将在.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 ++;
............
............
............
有人可以帮我解决这个问题吗?
答案 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
一样。