[問題] scanf一問
#include<stdio.h>
int main(void)
{
int input;
int ch;
printf("Enter an integer:");
while(scanf("%d",&input)!=1)
{
while((ch=getchar())!='\n')
putchar(ch);
printf(" is not an integer.\nEnter again:");
}
printf("You've entered %d\n",input);
return 0;
}
這是一個只會判斷輸入是否為整數的程式
如果不是輸入整數 就會顯示"xxx is not an integer.\nEnter again:"
又會請你再輸入一次
直到輸入整數為止
現在我想把它改成只能接受正整數
我把while(scanf("%d",&input)!=1)
改為while(scanf("%d",&input)!=1 || input<0)
1.
雖然可以跑 但是那負數不會顯示出來
只會顯示" is not an integer.\nEnter again:"
請問是何原因??
2.
又請問該怎麼改才是對的??
試了好多種方法都有問題...orz
=====
while ((ch = getchar()) != '\n')
{
if (scanf("%d %d",&rows, &cols) != 2)
另一個程式是這樣
會要輸入三個數 最後兩個為整數 以空白區隔
如x 1 2 也可以 3 4 5
我的疑問是
3.
為何scanf可以抓到最後兩個數字??
第一個卻不會抓??
4.此時getchar()的緩衝區內容應該是x 1 2 ??
--
5L36f6d6I5207573K657273206f6E62066Y697265O666f78206172U65207375636b2e
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.217.17
※ 編輯: sicao 來自: 114.36.217.17 (11/21 20:46)
推
11/21 21:09, , 1F
11/21 21:09, 1F
→
11/21 21:10, , 2F
11/21 21:10, 2F
→
11/21 21:11, , 3F
11/21 21:11, 3F
→
11/21 21:12, , 4F
11/21 21:12, 4F
推
11/21 21:15, , 5F
11/21 21:15, 5F
→
11/21 21:16, , 6F
11/21 21:16, 6F
→
11/21 21:16, , 7F
11/21 21:16, 7F
→
11/21 21:16, , 8F
11/21 21:16, 8F
→
11/21 21:17, , 9F
11/21 21:17, 9F
→
11/21 21:19, , 10F
11/21 21:19, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章