當我輸入a
時,輸出爲not a
。條件是真的那麼爲什麼輸出not a
?當我使用getchar
而不是scanf_s
時,它工作正常。有什麼問題?爲什麼scanf_s函數沒有正確輸入?
char op;
scanf_s("%c", &op);
if (op == 'a') {
printf("the character is a");
}
else {
printf("not a");
}
當我輸入a
時,輸出爲not a
。條件是真的那麼爲什麼輸出not a
?當我使用getchar
而不是scanf_s
時,它工作正常。有什麼問題?爲什麼scanf_s函數沒有正確輸入?
char op;
scanf_s("%c", &op);
if (op == 'a') {
printf("the character is a");
}
else {
printf("not a");
}
嘗試scanf()
而不是scanf_s()
。
VS將使用'的scanf時發出一個警告(也許錯誤)()'。這很煩人。 –
@Cool蓋伊http://stackoverflow.com/a/23487039/2410359安靜警告 – chux
說明符%c
(兩個這樣的例外%s
,%[
)需要大小 -
scanf_s("%c", &op, 1); // 1 to read single character
第三參數應該是sizeof
類型第三參數。 scanf_s
僅保證可供如果__STDC_LIB_EXT1__
由實現所定義,並且如果用戶包括<stdio.h>
之前定義__STDC_WANT_LIB_EXT1__
爲整數常數1
。
#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
int main()
{
char op;
scanf_s("%c", &op, sizeof(op));
if (op == 'a')
printf("the character is a");
else
printf("not a");
return 0;
}
您正在使用什麼編譯器? –
我不知道。只要運行它的Visual Studio 2013 –
嘗試'scanf_s( 「%C」,&OP,1);' – BLUEPIXY