2013-03-14 83 views
1

之前保持輸入有了這個代碼,我發現這裏的堆棧:如何CTRL-C

... 
char buffer[256] 

while((count=read(0, buffer, 256)) > 1) 
    { 
    if(buffer[count] = '\n') break; 
    } 

    buffer[n-1] ='\0'; 

我可以從標準輸入讀取,但我有2個問題:

  1. 爲什麼'='用在if()而不是'=='
  2. 如果我在寫東西后按CTRL-C,我該如何保留我寫的 ?

由於

+4

使用'='而不是'=='可能是一個錯字。否則就沒有意義了。另外,它應該是'if(buffer [count-1] =='\ n')'。 – 2013-03-14 16:18:57

+2

這絕對不是一個錯字,讀取返回讀取計數。而循環運行時讀計數大於1。 – 2013-03-14 16:20:17

+0

@Armin:問題是關於'if'中的'=',而不是'while'。 – jxh 2013-03-14 16:58:37

回答

1

爲什麼 '=' 在如果()而不是 '==' 使用?

在if語句中,它可能是一個錯字。因爲

buffer[count] = '\n' 

將始終爲'\ n',並在C中它是「真」(非空)。

如果我在寫完東西后按下CTRL-C,我該如何保留我寫的內容?

在終端中按下CTRL-C會向運行的進程發送SIGINT。通常你的應用程序會立即退出,不管它在做什麼。

你可以用some lines of code來捕捉到SIGINT事件,但是「保留你寫的東西」有什麼意義?

+1

'buffer [count]'也被關閉。 '^ C'通常會產生'SIGINT'。 – jxh 2013-03-14 17:02:37

+0

已將其更改爲'SIGINT'。是的,'buffer [count]'似乎是一個關閉的。 – flyingOwl 2013-03-14 17:36:15

+1

「intermediately」 - >「立即」? – 2013-03-14 17:38:15