2016-03-05 63 views
-2

如果有多個空格,我寫了下面的代碼只打印一個空格。如何在Ubuntu上提供EOF,Ctrl-D似乎不起作用?

#include<stdio.h> 

void main() 
{ 
    int c; 
    while((c=getchar())!=EOF) 
    { 
     if(c==' '||c=='\t') 
     { 
      while(c==' '||c=='\t') 
       c=getchar(); 
      putchar(' '); 
      putchar(c); 

     } 
     else 
      putchar(c); 
    } 
} 
+3

你忘了檢查的getchar()返回EOF有你內心的while()循環? – nos

+1

我知道這是一個Linux問題,但在MSVC中,相當於'Ctrl-Z'必須是換行符後面的第一個按鍵。 –

+0

不,不。內部循環只是跳過額外的標籤空間或空間。 – imox

回答

1

您需要在線路類型按Ctrl + d,對自己,經過連續輸入
或兩個按Ctrl + d

./a.out 
foo   bar<ENTER> 
<Ctrl+D> 

./a.out 
foo   bar<Ctrl+D><Ctrl+D>