如何防止for循环的最后一个循环中的打印空间

时间:2013-12-18 19:47:18

标签: c

你们这个简单的问题:

我写了这个循环,它打印了一些数组的值。 我想在每个值之间留出空格,但我不希望在代码打印的最后一个值之后有空格。

任何想法我如何做到这一点而不会太复杂?

for (i_talltrees=1; i_talltrees<=numtrees; i_talltrees++) {
    pre=i_talltrees-1;
    post=i_talltrees+1;
    if (talltrees[pre]<talltrees[i_talltrees]&&talltrees[i_talltrees]>talltrees[post]) {
        printf("%d ", talltrees[i_talltrees]);
    }

    }

3 个答案:

答案 0 :(得分:3)

试试这个:

 int flag = 0; 
 if (talltrees[pre]<talltrees[i_talltrees]&&talltrees[i_talltrees]>talltrees[post]) 
 {   
    if(flag)
    { 
        printf(" ");
        flag = 0;
    }
    printf("%d", talltrees[i_talltrees]); 
    flag = 1; 
 } 

答案 1 :(得分:1)

这应该可以防止前导或尾随空格:

int have_printed = 0;

for (i_talltrees=1; i_talltrees<=numtrees; i_talltrees++) {
    pre=i_talltrees-1;
    post=i_talltrees+1;
    if (talltrees[pre]<talltrees[i_talltrees]&&talltrees[i_talltrees]>talltrees[post]) {
        if (have_printed) {
            printf(" ");
        }
        else {
            have_printed = 1; 
        }
        printf("%d", talltrees[i_talltrees]);
    }
}

答案 2 :(得分:0)

改变格式

const char *format = "%d";
for (i_talltrees=1; i_talltrees<=numtrees; i_talltrees++) {
  pre=i_talltrees-1;
  post=i_talltrees+1;
  if (talltrees[pre]<talltrees[i_talltrees]&&talltrees[i_talltrees]>talltrees[post]) {
    printf(format, talltrees[i_talltrees]);
    format = " %d";   // next, if any, begin with a space.
  }
}