我正在使用scanf将数字和+, - ,/运算符输入堆栈。
int scan = 1;
char * p = malloc(sizeof(char)*5);
while (scan = 1) {
scanf("%1s", p);
if(p>='0' && p<='9'){
push(stack, p);
print(stack);
}
}
为什么它永远不符合条件?你怎么比较字符串?
答案 0 :(得分:2)
好吧,如果你想要做的是测试字符串的第一个字符是否介于'0'和'9'之间,你应该这样做:
// select the first iframe
.frame(0)
// go back to the original html content
.frame()
但是如果你想将字符串比作字符串,那么旧的C库函数就是(*p >= '0' && *p <= '9')
。我相信现在有很多其他库可以提供更多功能。
答案 1 :(得分:1)
if(p>='0' && p<='9'){
p
是char*
,'0'
是char。您的编译器应该已经警告过您要比较不兼容的类型。请改用*p
(同样适用于'9
&#39;)。在我的脑海中*p
被读作&#34; p&#34;的内容(在此背景下)
在更一般的情况下,使用strcmp()
来比较字符串。
如果您的编译器确实警告过您的不良比较:请将其记录在案,大多数编译器警告应该被监听而不会被忽略。如果您的编译器没有警告您查找如何启用所有警告。