我試過使用NULL
但它不起作用。有任何想法嗎?循環scanf直到用戶輸入任何內容(命中輸入兩次)使用while循環
while (index != NULL) { //what expression must be passed here?
printf("Enter a number\n");
scanf ("%d", &index);
//do some work
}
我試過使用NULL
但它不起作用。有任何想法嗎?循環scanf直到用戶輸入任何內容(命中輸入兩次)使用while循環
while (index != NULL) { //what expression must be passed here?
printf("Enter a number\n");
scanf ("%d", &index);
//do some work
}
ASCII中NULL值的十進制值是0,所以如果你現在在程序中輸入它,它會結束。這與換行符不同(十進制10)。
在任何情況下,scanf()都會一直持續下去,直到你輸入一個值,所以你需要爲循環條件使用某種標記值,例如。如果您僅使用正數,請使用負數;如果你有一個上限,超出這個任意值。否則,你將不得不以其他方式做到這一點。輸入一個字符串並將其轉換爲一個int,如果它不是您的退出字符/字符串。
對不起@尼爾,你指的是什麼 - 你能更具體嗎? – thelionroars1337 2011-06-04 10:13:19
輸入0將結束循環,因爲這是NULL的十進制等值。 – thelionroars1337 2011-06-04 10:19:28
對不起,我誤解了你,我以爲你的意思是進入NUL角色。 – 2011-06-04 10:23:52
如果你仔細想想,我敢打賭,你從來沒有見過一個真實世界的程序,提示你輸入這樣的信息。爲什麼?因爲要正確書寫它們幾乎是不可能的,甚至更難以正確使用。真實世界程序的工作方式是使用GUI或從文件/流中讀取輸入而無需提示。鑑於這個事實,我從來沒有理解爲什麼這麼多新手程序員想要提示用戶輸入。
話雖如此,你可以在代碼中輸入值來終止循環。所有的整數值是你程序的有效輸入嗎?如果是這樣,你需要一些其他的終止方式,比如輸入文件結束符。
不,你是對的,我從來沒有見過任何真實世界的節目。我會嘗試EOF的方式。 – 2011-06-04 10:25:39
什麼是'cin'和'>>'? – 2011-06-04 09:50:47