背景:1.要求輸入多組數據,然后輸出什么東西,當第一個數輸入的是0是,程序停止。
2.前幾天學過 while(scanf_s("%d",&x)!=EOF) ctrl+z時停止 所以我想可以把EOF換成0,這樣輸
入0是就可以停止,但是事實證明我錯了。
知識儲備:scanf_s的返回值 :
scanf("%d %d",&a,&b);
函數返回值為int型。如果a和b都被成功讀入,那么scanf的返回值就是2;
如果只有a被成功讀入,返回值為1;
如果a和b都未被成功讀入,返回值為0;
如果遇到錯誤或遇到end of file,返回值為EOF。end of file為Ctrl+z 或者Ctrl+d。
錯誤:當我輸入0時,我成功的讀入了一個數,則scanf_s成功的返回了1,此時1!=EOF成立 注意EOF通常為-1,ctrl+z,此時while成立,執行while里面的程序,所以邏輯錯誤。
解決:while (scanf_s("%d",&x))
{
x==0;
break;
............
}
return 0;
這樣就可以成功解決問題,而且是在0時結束程序
輸入數字時while(scanf("%d",&n)!=EOF)
輸入字符串while(gets(a)!=NULL)----------------這個要記住,不是很好想!!!