【发布时间】:2020-08-03 12:00:38
【问题描述】:
我刚刚做了一个代码,它可以在字符串中找到最后一个数字和最后一个字母,如下所示:-
#include<stdio.h>
main()
{
char str[100] = "a1b2c3d4", ldig=-1, lalpha=-1, i;
for(i=0; i < sizeof(str)-1; i++)
{
if(str[i] >= 48 && str[i] <= 57)
ldig = i;
else if(str[i] >= 97 && str[i] <= 122)
lalpha = i;
else if(str[i] >= 65 && str[i] <= 90)
lalpha = i;
}
if(ldig != -1)
printf("%c ", str[ldig]);
if(lalpha != -1)
printf("%c", str[lalpha]);
}
这给了我正确的输出,即
4 d
但是当我尝试使用 scanf 或 get 输入数据而不是预定义字符串时,我得到了不正确的输出。
请帮忙
【问题讨论】:
-
“但是当我尝试使用 scanf 或获取时”。显示该代码。如果我们看不到它,则无法告诉您它可能有什么问题。猜测:错误使用
sizeof而不是strlen。 -
不保证
char已在任何实现上签名。建议:char str[100] = "a1b2c3d4"; signed char ldig = -1, lalpha = -1;
标签: c