【发布时间】:2017-06-07 10:05:09
【问题描述】:
我被要求将输入中的两个或多个连续空白行压缩为输出中的一个空白行。所以我必须使用 Cygwin 来做 I/O 或测试它。 示例:./Lab test2.txt
我的代码是:
int main(void){
format();
printf("\n");
return 0;
}
void format(){
int c;
size_t nlines = 1;
size_t nspace = 0;
int spaceCheck = ' ';
while (( c= getchar()) != EOF ){
/*TABS*/
if(c == '\t'){
c = ' ';
}
/*SPACES*/
if (c ==' '){/*changed from isspace(c) to c==' ' because isspace is true for spaces/tabs/newlines*/
/* while (isspace(c = getchar())); it counts while there is space we will put one space only */
if(nspace > 0){
continue;
}
else{
putchar(c);
nspace++;
nlines = 0;
}
}
/*NEW LINE*/
else if(c == '\n'){
if(nlines >0){
continue;
}
else{
putchar(c);
nlines++;
nspace = 0;
}
}
else{
putchar(c);
nspace = 0;
nlines = 0;
}
}
}
但是我的 test2.txt 没有我想要的结果。我的逻辑/代码有问题吗?
【问题讨论】:
-
输入
else { nlines = 0; }来重置计数器。 -
这个问题的逻辑相同:stackoverflow.com/questions/44402182/…
-
c = '\n';如果c == '\n'已经适用,那绝对是徒劳的...... -
@Shiva 不,它仍然不起作用。但感谢您的回答
-
@Aconcagua 我只想将它设置为一个新的空白行。是否已经有空行也没关系。
标签: c