【发布时间】:2019-01-26 21:18:38
【问题描述】:
好的,所以我是 c/c++ 的初学者,我正在创建这个小程序,用于检查用户提供的输入是否为有效数字,如果是,则打印“它是一个数字”,否则打印"它是一个字符串"
一些示例输出
1 - is a number
-1.1 - is a number
1......1 - is a character string
three - is a character string
.12 is a character string
+0.12 is a number
ABC123ABC - is a character string
我的代码中出现此错误。如果有人能帮我解决这个问题,我将不胜感激。 TIA
cpp:52:23: 错误:从 'char' 到 'char*' 的无效转换 [-fpermissive]
如果 (!isNum(c[i]))
{ ~~~^ task1.cpp:5:19:注意:初始化 'bool isNum(char*)' 的参数 1 bool isNum(char * p){
我的代码
#include <iostream>
bool isNum(char * p){
if (NULL == p || *p == '\0'){
return false;
}
int dot = 0;
int plus = 0;
int minus = 0;
while(*p){
char a = *p;
switch (a)
{
//Only allows 1 dot
case '.':
if (++dot > 1){
return false;
}
break;
//only allows 1 plus sign
case '+':
if (++plus > 1){
return false;
}
//only allows 1 minus sign
case '-':
if (++minus > 1){
return false;
}
//Only allows 0-9
default:
if (a < '0' || a > '9'){
return false;
}
}
p++;
}
return true;
}
int main(){
//char array of size 1024
char c[1024];
std::cout << "Enter something: ";
std::cin >> c;
for(int i = 0; i < sizeof(c); i++){
if (!isNum(c[i])){
std::cout << c << " is a character string";
}
else {
std::cout << c << " is a number";
}
}
}
【问题讨论】:
-
你的函数需要一个 char* 并且你正在传递一个 char
-
抱歉,我是新手,您能帮我解决这个问题吗?
-
最好阅读book on C++,会节省大量时间(真的)。
-
我会看看这个。谢谢
-
@JohnCasey 如果您记录下来,您的代码会更容易理解。例如,
isNum没有关于它作为输入的文档,这可能会导致您使用错误的输入调用它。如果它有文档说“输入p是一个指向要测试的字符的指针”,那么你就会知道你需要向它传递一个指向要测试的字符的指针。至少没有这样的注释,你可以很容易地传递一个错误的东西。