【发布时间】:2021-04-20 04:58:24
【问题描述】:
我正在学习C,我有这个问题:
主要:
int main()
{
char str[] = "abcdefg";
countRange(str, 'e');
}
功能:
int countRange(char* str, char c1)
{
char *t;
for (t = str; *t != '\0'; t++)
{
if ((t >= c1))
{
printf(t);
}
}
}
在这种情况下,函数的目标是只打印“efg”,因为这些值大于或等于字符 e,但是最终什么都不会打印并且函数退出。有人可以帮我吗?谢谢
【问题讨论】:
-
应该是
if (*t >= c1)。你忘了取消引用t。 -
感谢您的帮助!这得到了打印: efgfgg ,知道为什么吗?
-
是的,这就是我希望从您的代码中得到的输出,因为只要该字符串的第一个字符符合条件,您就会从位置
t打印整个字符串。 -
printf(t)是错误的,因为它需要一个字符串作为第一个参数,因此它将打印从t开始的整个字符串。将其更改为putchar(*t)。 -
当我编译你的代码时,我收到 2 个警告。您是否忽略了警告?如果是这样..不要!如果没有收到警告,则需要提高编译器警告级别