【发布时间】:2017-06-09 04:04:05
【问题描述】:
您好,指的是同一个问题,但代码不同。
Replacing multiple new lines in a file with just one
int main(void){
format();
printf("\n");
return 0;
}
void format(){
int c;
size_t nlines = 1;
size_t nspace = 0;
while (( c= getchar()) != EOF ){
/*TABS*/
if(c == '\t'){
c = ' ';
}
/*SPACES*/
if (c ==' '){
if(nspace > 0){
continue;
}
else{
putchar(c);
nspace++;
nlines = 0;
}
}
/*NEW LINE*/
else if(c == '\n'){
if(++nlines >2){
continue;
}
else {
nlines++;
nspace = 0;
}
putchar(c);
}
else{
putchar(c);
nspace = 0;
nlines = 0;
}
}
}
我想将多个空白行压缩到一个空白行中,但它似乎不起作用,并且在标准输出的 Cygwin 终端上,最后一行给了我额外的空白行,尽管输入末尾没有空白行.
例如
输入
Hello Hi\n
\n
\n
Hey\t\tHola\n
期望的输出
Hello Hi\n
\n
Hey Hola\n
实际输出
Hello Hi\n
Hey Hola\n
请解释一下!
【问题讨论】:
-
您提供的输出是您想要的输出或您正在获得的输出。
-
isspace()可以让你的代码更加简洁易读 -
不要不要在获得答案后修改您的代码,从而使答案无效。这根本不是犹太教。
-
我的导师不喜欢它。我使用了嵌套的 while 循环,它有效,但我不得不重做,因为他不喜欢它。还是非常感谢! @VolAnd
-
哦,我很抱歉!我认为这对人们来说会很棒。我很抱歉。 @JonathanLeffler
标签: c