C语言如何用一行替换多行空行
How to replace multiple blank lines with a single line in C language
我想在一行中压缩多行。我尝试应用我自己的逻辑,但有些地方不对。
char *p;
linecount=0;
while (fgets(buffer, sizeof(buffer), file))
{
//it will print the user input with number
p=buffer;
if('\r' == *p ||'\n' == *p )
{
linecount++;
if(linecount>2 )
printf("\n");
}
else
{
linecount=0;
printf("\t %s", p);
}
例如一个文件有这样的行
a
b
c
d
e
那么输出应该是
a
b
c
d
e
基本上,我正在为 cat -s 命令开发代码。
在你的 if 块中:
if(linecount>2 )
printf("\n");
你正在做的是打印出第 3、4、..N 个空行。
第一个空白行数 = 1
第二个空白行数 = 2
我会颠倒那个逻辑
if( linecount == 0 ){
linecount++;
printf("\n");
}
这样,您将只打印出换行列表中的第一个空行。
为什么要使用 fgets? (更重要的是,你为什么不处理大于缓冲区的行?)你一次只需要查看一个字符:
#include <stdio.h>
int main(void) {
int c;
int count=0;
while((c=getchar())!=EOF) {
if(c=='\n'){
if(++count>2)
continue;
} else {
count=0;
}
putchar(c);
}
return 0;
}
我想在一行中压缩多行。我尝试应用我自己的逻辑,但有些地方不对。
char *p;
linecount=0;
while (fgets(buffer, sizeof(buffer), file))
{
//it will print the user input with number
p=buffer;
if('\r' == *p ||'\n' == *p )
{
linecount++;
if(linecount>2 )
printf("\n");
}
else
{
linecount=0;
printf("\t %s", p);
}
例如一个文件有这样的行
a
b
c
d
e
那么输出应该是
a
b
c
d
e
基本上,我正在为 cat -s 命令开发代码。
在你的 if 块中:
if(linecount>2 )
printf("\n");
你正在做的是打印出第 3、4、..N 个空行。
第一个空白行数 = 1
第二个空白行数 = 2
我会颠倒那个逻辑
if( linecount == 0 ){
linecount++;
printf("\n");
}
这样,您将只打印出换行列表中的第一个空行。
为什么要使用 fgets? (更重要的是,你为什么不处理大于缓冲区的行?)你一次只需要查看一个字符:
#include <stdio.h>
int main(void) {
int c;
int count=0;
while((c=getchar())!=EOF) {
if(c=='\n'){
if(++count>2)
continue;
} else {
count=0;
}
putchar(c);
}
return 0;
}