求 c 验证输入格式

HBwei812 2013-09-23 08:39:35
如题,想确定 scanf 输入的只是数字 1-99999,
或只是英文字符 a-zA-Z或英文字串,
否则执行其它,
请问应该如何写呢? 谢谢
...全文
144 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yulitingfeng 2013-09-25
  • 打赏
  • 举报
回复
#include <stdio.h>
int main(void)
{
int vx;
printf("請輸入一个整數:");
scanf("%[1-99]d",&vx); // 
if (vx %5)
puts("輸入的整數不能整除.");
return (0);
}

给你的例子是用来参考的。不是随便照抄的。
yulitingfeng 2013-09-25
  • 打赏
  • 举报
回复
引用 7 楼 u011781927 的回复:
[quote=引用 3 楼 yulitingfeng 的回复:] [ ] 扫描字符集合
#include <stdio.h>

int main()
{
        char *a=(char *)malloc(10);
        scanf("%[a-z]s",a);
        printf("%s\n",a);
        return 0;
}
请问这句 char *a=(char *)malloc(10); 是什么意思呢?谢[/quote] 申请内存空间
lin5161678 2013-09-24
  • 打赏
  • 举报
回复
引用 3 楼 yulitingfeng 的回复:
[ ] 扫描字符集合
#include <stdio.h>

int main()
{
        char *a=(char *)malloc(10);
        scanf("%[a-z]s",a);
        printf("%s\n",a);
        return 0;
}
想法是对的 用法是错的 楼主的说法太含糊 目前就单纯的做 读取 字母和数字 scanf("%[a-zA-Z0-9]".....)
HBwei812 2013-09-24
  • 打赏
  • 举报
回复
谢谢楼上各位指点,理解 ing。
「已注销」 2013-09-24
  • 打赏
  • 举报
回复
引用 3 楼 yulitingfeng 的回复:
[ ] 扫描字符集合
#include <stdio.h>

int main()
{
        char *a=(char *)malloc(10);
        scanf("%[a-z]s",a);
        printf("%s\n",a);
        return 0;
}
scanf正则表达很好用
yulitingfeng 2013-09-24
  • 打赏
  • 举报
回复
[ ] 扫描字符集合
#include <stdio.h>

int main()
{
        char *a=(char *)malloc(10);
        scanf("%[a-z]s",a);
        printf("%s\n",a);
        return 0;
}
HBwei812 2013-09-24
  • 打赏
  • 举报
回复
/* 输入的整数是奇数还是偶数呢 */ #include <stdio.h> int main(void) { int cont; /* 要继续嗎 */ do { int *no=(int *)malloc(10); // 原句是 int no; printf("请输入一个整数: "); if(scanf("%[a-z]d",&no)) // 原句是 scanf("%d",&no); puts("error"); else if (no%2) puts("这个整数是奇数。"); else puts("这个整数是偶数。"); printf("要重复一次吗? 【yes...0 / no ... 9]】:"); scanf("%d",&cont); } while (cont == 0); return (0); } 执行后出错,if(no%2)… cannot use pointers here 求解,谢.
HBwei812 2013-09-24
  • 打赏
  • 举报
回复
引用 3 楼 yulitingfeng 的回复:
[ ] 扫描字符集合
#include <stdio.h>

int main()
{
        char *a=(char *)malloc(10);
        scanf("%[a-z]s",a);
        printf("%s\n",a);
        return 0;
}
请问这句 char *a=(char *)malloc(10); 是什么意思呢?谢
HBwei812 2013-09-24
  • 打赏
  • 举报
回复
引用 1 楼 AnYidan 的回复:
按串读入,逐个判断 可以参考 <ctype.h> 中的函数 或许可以用正则判断,等高手
谢谢指示. ############################################### /* 輸入的整數能被 5 整除嗎 */ #include <stdio.h> int main(void) { int vx; printf("請輸入一个整數:"); scanf("%d",&vx); // 如何在这里验证输入格式 if (vx %5) puts("輸入的整數不能整除."); return (0); } code 來源 - 望洋大俠 . 杰勇
AnYidan 2013-09-23
  • 打赏
  • 举报
回复
按串读入,逐个判断 可以参考 <ctype.h> 中的函数 或许可以用正则判断,等高手

69,379

社区成员

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

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