基本上,我需要确保输入是一个整数,如下所示:
do {
printf("Enter > ");
scanf("%d", &integer);
} while (/* user entered a char instead of an int */);
Run Code Online (Sandbox Code Playgroud)
我尝试了各种方法,但是当我尝试输入时,它总是以运行时错误或无限循环结束char
.我知道这fflush(stdin)
是一个未定义的行为,最好不要将它包含在我的代码中以防止任何错误加上它由于某些原因在VS2015中不再起作用.
下面的代码是我尝试过的方法:
typedef enum {false, true} bool;
int ipt;
char c;
bool wrong_ipt;
do {
c = '\0';
printf("Enter > ");
scanf("%d%c", &ipt, &c); //infinite loop occurs while a char has been entered
} while (c != '\n');
do {
c = '\0';
printf("Enter > ");
} while (scanf("%d", &ipt) …
Run Code Online (Sandbox Code Playgroud) class MyString {
private:
char *m_pchString;
int m_nLength;
public:
MyString(char* pchString="0") { //problem on this parameter
m_nLength = strlen(pchString)+1;
m_pchString = new char[m_nLength];
strncpy(m_pchString, pchString, m_nLength);
m_pchString[m_nLength-1] = 0;
}
~MyString() {
delete[] m_pchString;
m_pchString = 0;
}
char* GetString() {return m_pchString;}
int GetLength() {return m_nLength;}
};
Run Code Online (Sandbox Code Playgroud)
如果我遵守了这个,编译器会发给我一个警告:
警告:不推荐将字符串常量转换为'char*'
除非我修改从参数char *pchString = "0"
到const char *pchString = "0"
为什么参数中的默认char*必须是const?