C语言——判断输入字符串是否合法代码分享

ops/2024/12/15 12:32:09/

一. 引言

        成功的程序总是尝试预测无效数据,并将此类数据隔离,使其不被接受和处理
        首先验证数据的类型是否正确;如果没有,请要求用户重新输入数据
        解释为什么输入的数据无效
        验证输入数据的最常用方法之一是接受所有数字作为字符串
        然后可以检查每个字符,以确保它符合所请求的数据类型

        检查以下内容:
        字符串不是空的。
        存在有效的符号符号(+或-)
        如果有一个符号符号,它后面至少有一个数字。
        其余所有字符都是有效数字。
        有效的数字是0到9之间的任何字符,而小于0或大于9的任何字符都不是数字

二. 代码如下:

#include <stdio.h>
#include <stdlib.h>  /* needed to convert a string to an integer */
#define MAXCHARS 40
#define TRUE 1
#define FALSE 0int isValidInt(char []);  /* function prototype */int main()
{char value[MAXCHARS];int number;printf("Enter an integer: ");gets(value);if (isValidInt(value)== TRUE){number = atoi(value);printf("The number you entered is %d\n", number);}else{printf("The number you entered is not a valid integer.\n");}return 0;
}int isValidInt(char val[])
{int start = 0;int i;int valid = TRUE;int sign = FALSE;/* check for an empty string */if (val[0] == '\0') valid = FALSE;/* check for a leading sign */if (val[0] == '-' || val[0] == '+'){sign = TRUE;start = 1;  /* start checking for digits after the sign */}/* check that there is at least one character after the sign */if(sign == TRUE && val[1] == '\0') valid = FALSE;/*now check the string, which we know has at least one non - sign char */i = start;while(valid == TRUE && val[i]!= '\0'){if (val[i] < '0' || val[i] > '9') /* check for a - non - digit */{valid = FALSE;}i++;}return valid;
}
#define TRUE 1
#define FALSE 0
#define MAXCHARS 40int getanInt()
{int isValidInt(char []);  /* function prototype */int isanInt = FALSE;char value[MAXCHARS];do{gets(value);if (isValidInt(value) == FALSE){printf("Invalid integer - Please re - enter: ");continue; /* send control to the do - while expression test */}isanInt = TRUE;}while (isanInt == FALSE);return (atoi(value));  /* convert to an integer */
}
  • 第一个代码主要实现了一个isValidInt函数来检查输入的字符串是否为有效的整数,并在main函数中使用该函数来处理用户输入。
  • 第二个代码在 Program 9.8 的基础上,进一步封装了一个getanInt函数,用于循环获取用户输入的有效整数,直到用户输入正确为止。

往期回顾:

C语言——字符串指针变量与字符数组(易错分析)-CSDN博客

C语言——习题练习(一)-CSDN博客

C语言——指针初阶(三)-CSDN博客

C语言——指针初阶(二)-CSDN博客

C语言——海龟作图(对之前所有内容复习)_海龟图c语言-CSDN博客

C语言——指针初阶(一)_c语言指针p和*p区别-CSDN博客

C语言函数递归经典题型——汉诺塔问题_汉诺(hanoi)塔问题-CSDN博客

C语言——数组逐元素操作练习-CSDN博客


http://www.ppmy.cn/ops/142101.html

相关文章

深入详解机器学习基础中的模型评估方法

引言 机器学习正在快速改变我们的世界&#xff0c;从自动驾驶汽车到个性化推荐系统&#xff0c;其应用无处不在。然而&#xff0c;一个成功的机器学习项目不仅依赖于强大的算法和丰富的数据&#xff0c;还需要精确的模型评估方法。模型评估是机器学习过程中不可或缺的环节&…

HUGGINFACE NLP-dataset

1 What if my dataset isn’t on the Hub? 1.1 Working with local and remote datasets 1.1.1 supports several common data formats, CSV & TSV csv load_dataset("csv", data_files"my_file.csv") Text files text load_dataset("text&quo…

微信小程序中 Echarts 的巧妙运用

一、引入 Echarts 的准备工作 在微信小程序中引入 Echarts 需要进行一系列的准备工作。首先&#xff0c;我们可以从 echarts 官网或 GitHub 上下载 echarts-for-weixin 项目。找到其中的 ec-canvas 文件夹&#xff0c;这个文件夹将是我们引入到微信小程序项目中的关键部分。 …

鼠标断断续续的一直转圈咋办

这两天碰到一个事情&#xff0c;鼠标持续的转圈&#xff0c; 敲代码打字啥的&#xff0c;一会儿又失去下焦点&#xff0c;如此反复&#xff0c;搞得心态爆炸。 实在进行不下去了&#xff0c;网上百度了一堆&#xff0c;有说设置鼠标的&#xff0c;有说清理开机启动的&#xff0…

SpringCloud集成sleuth和zipkin实现微服务链路追踪

文章目录 前言技术积累spring cloud sleuth介绍zipkin介绍Zipkin与Sleuth的协作 SpringCloud多模块搭建Zipkin Server部署docker pull 镜像启动zipkin server SpringCloud 接入 Sleuth 与 Zipkinpom引入依赖 (springboot2.6)appilication.yml配置修改增加测试链路代码 调用微服…

dolphinscheduler服务RPC框架源码解析(二)RPC核心注解@RpcService和@RpcMethod设计实现

1.工程目录 从3.2.1版本之后这个dolphinscheduler中的RPC框架工程就从原来的dolphinscheduler-remote工程重构到了dolphinscheduler-extract工程。 dolphinscheduler 父项目 dolphinscheduler-extract RPC服务项目 dolphinscheduler-extract-alert 监控告警服务RPC接口定义、…

【专题】2024年中国新能源汽车用车研究报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38564 本年度&#xff0c;国家及地方政府持续发力&#xff0c;推出诸多政策组合拳&#xff0c;全力推动汽车产业向更高质量转型升级&#xff0c;积极鼓励消费升级&#xff0c;并大力推行以旧换新等惠民生、促发展举措。尤为引人注目…

MyBatis学习笔记:进阶知识2

MyBatis 作为一款优秀的持久层框架&#xff0c;在 Java 开发中占据着重要地位。它简化了数据库操作&#xff0c;提供了灵活且高效的数据访问方式。本文将深入探讨 MyBatis 的核心功能&#xff0c;包括分页查询、联表查询、动态 SQL 以及代码自动生成&#xff0c;并结合实际案例…