2015-01-26 60 views
1

最後的空間,我打印出來的陣列中的每個元素通過間隙如何從printf的輸出

// n - array length 
for(x=0; x<n; x++){ 
    printf("%d ", a[x]); 
} 

它返回我:

1 2 3 4 5 [space here] 

如何刪除最新空間(人物)?

+4

(不要添加空格開頭。) – user2864740 2015-01-26 18:04:09

+1

「刪除」已打印的字符通常是不可能的 - 您可以嘗試用退格鍵覆蓋它,但依賴於您的控制檯設置。合乎邏輯的事情就是不要打印它。 – usr2564301 2015-01-26 18:41:28

回答

3
for(x=0; x<n; x++){ 
    if(x == n-1) 
    printf("%d", a[x]); /* Print without space when printing last element */ 
    else 
    printf("%d ", a[x]); 
} 
2

的方法很簡單:

for(x=0; x<n; x++){ 
    printf("%d", a[x]); 
    if(x<(n-1)){ 
     printf(" "); 
    } 
} 
1
for(x=0; x<n-1; x++){ 
    printf("%d ", a[x]); 
} 
if(n > 0) 
    printf("%d", a[x]); 
3

一種替代,IMHO更易讀的方法:

for (x = 0; x < n; x++) 
{ 
    if (x > 0) 
    putchar(' '); 
    printf("%d", a[x]); 
} 
+0

這仍然打印尾部空間 – user3629249 2015-01-26 19:27:45

+0

@ user3629249(a)否:https://ideone.com/D0x9F5(b)它怎麼可能?它不會在任何數字之後打印任何*,只有*在*之前*某些數字; – 2015-01-26 19:32:41

0

A 「分支少」 的保羅Roub的溶液變體。它要求保持n > 0(即,因此在a陣列中存在至少一個元素)。

#include <stdio.h> 

int main(void) 
{ 
    int x, n, a[] = {1, 2, 3, 4, 5}; 

    n = 5; 

    printf("%d", a[0]); 
    for (x = 1; x < n; x++) 
     printf(" %d", a[x]); 

    putchar('\n'); 

    return 0; 
} 
0

每個人都發布自己的答案,所以這是我自己的答案。

int n, i; 
for (i = 1, n = 5; i <= n; i++) 
    printf("%d%s", i, i < n ? " " : ""); 
0

不知道我會建議使用這種方法,但這樣的事情也可以工作:

for (x = 0; x < n; x++) 
{ 
    printf("%c%d", " "[!x], a[x]); 
} 

這是一個有點cheaty,但在我看來整齊。