isdigit()函数

Rookiekk 2017-03-16 11:29:46

//实现功能用户读入一个位置,输出位置后的一部分内容,通过输入非数字字符终止循环;
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>

int main()
{
FILE *fp;
char fname[10],content[20];
int l,n;

printf("enter your file name:");
gets(fname);
if((fp=fopen(fname,"r"))==NULL){
printf("cannot open.\n");
exit(1);
}
while(1)
{
printf("enter a location:");
scanf("%ld",&l);
getchar();
//n=isdigit(l);
//printf("isdigit:%d\n",n);
if(isdigit(l)) //ctype.h 为什么isdigit()在输入为数字时返回为0;
{
fseek(fp,l,0);
if(fgets(content,20,fp)!=NULL)
fputs(content,stdout);

}
else
{
printf("over\n");
break;
}
}
return 0;
}


问题正如注释所写,当我输入1,2这些数字时返回为0,求大神指点问题出在哪
...全文
688 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rookiekk 2017-03-16
  • 打赏
  • 举报
回复
[quote=引用 1 楼 cfjtaishan 的回复:] 因为isdigit是判断字符的,而l是整型数,所以返回0; 字符‘1’~'9'是十六进制0x30~0x39,即48~57;
自信男孩 2017-03-16
  • 打赏
  • 举报
回复
因为isdigit是判断字符的,而l是整型数,所以返回0; 字符‘1’~'9'是十六进制0x30~0x39,即48~57;

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧