c语言中如何判断用户输入的字符串是指定范围的数字 C语言中怎样限制输入值为字符串或数字

C\u8bed\u8a00\u4e2d\uff0c\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5982\u4f55\u533a\u5206\u6570\u5b57\u5b57\u7b26\uff0c

\u901a\u8fc7\u5224\u65ad\u8f93\u5165\u5b57\u7b26\u7684ascii\u7801\u7684\u8303\u56f4 \u5c31\u53ef\u4ee5 \u5982\u679c\u5927\u4e8e\u7b49\u4e8e48 \u5c0f\u4e8e\u7b49\u4e8e57 \u5c31\u662f\u8f93\u5165\u7684\u963f\u62c9\u4f2f\u6570\u5b57\u3002
\u5982\u679c\u8f93\u5165\u7684\u5b57\u7b26 \u5927\u4e8e\u7b49\u4e8e65\u5c0f\u4e8e\u7b49\u4e8e90 \u5c31\u662f\u5927\u5199\u7684\u82f1\u6587\u5b57\u6bcd
\u5982\u679c\u8f93\u5165\u5b57\u7b26 \u5927\u4e8e\u7b49\u4e8e97 \u5c0f\u4e8e\u7b49\u4e8e122 \u5c31\u662f\u5c0f\u5199\u7684\u82f1\u6587\u5b57\u6bcd
\u5177\u4f53\u53c2\u8003\u4e00\u4e0bascii\u8868

1.\u51e1\u662f\u6570\u5b57\u7686\u4e3a\u5b57\u7b26\u3002\u4efb\u4f55\u6570\u5b57\u9996\u5148\u662f\u5b57\u7b26\uff0c\u7136\u540e\u624d\u80fd\u662f\u6570\u5b57\u3002\u6240\u4ee5\u8fd9\u4e2a\u95ee\u9898\u5e94\u8be5\u662f\u5982\u4f55\u5728\u5b57\u7b26\u4e2d\u8bc6\u522b\u6570\u5b57\u3002\u76f4\u63a5\u5c06\u6bcf\u4e2a\u5b57\u7b26\u6328\u4e2a\u63d0\u53d6\u51fa\u6765\uff0c\u5c06\u4ed6\u8d4b\u7ed9\u4e00\u4e2a\u6574\u578b\uff0c\u5f97\u5230\u5b83\u7684ASCII\u7801\u503c\u3002\u7136\u540e\u6839\u636eASCII\u7801\u7684\u8303\u56f4\u6765\u5224\u65ad\u5b83\u5230\u5e95\u662f\u6570\u5b57\u5b57\u7b26\u8fd8\u662f\u975e\u6570\u5b57\u5b57\u7b26\u3002\u7531\u4e0b\u8868\u53ef\u4ee5\u5f97\u77e5\uff0c\u6570\u5b57\u8303\u56f4\u572848~57\u7684\u90fd\u662f\u6570\u5b57\u5b57\u7b26\u3002

2.\u7528isdigit()\u51fd\u6570\u5224\u65ad\u5b57\u7b26\u4e32\u662f\u5426\u4e3a\u6570\u5b57\u3002 isdigit()\u51fd\u6570\u5305\u542b\u5728ctype.h\u5934\u6587\u4ef6\u4e2d\uff0c \u539f\u578b\uff1a int isdigit(char c); \u3000\u3000 \u7528\u6cd5\uff1a#include \u3000\u3000 \u529f\u80fd\uff1a\u5224\u65ad\u5b57\u7b26c\u662f\u5426\u4e3a\u6570\u5b57 \u3000\u3000 \u8bf4\u660e\uff1a\u5f53c\u4e3a\u6570\u5b570-9\u65f6\uff0c\u8fd4\u56de\u975e\u96f6\u503c\uff0c\u5426\u5219\u8fd4\u56de\u96f6\u30023.\u4e0b\u9762\u4f7f\u7528isdigit()\u5b9e\u73b0\u4e00\u4e2a\u5224\u65ad\u5b57\u7b26\u4e32\u662f\u5426\u4e3a\u6570\u5b57\u7684\u4ee3\u7801\u3002\u8fd9\u4e2a\u51fd\u6570\u662f\u5224\u65ad\u67d0\u4e00\u4e2a\u5b57\u7b26\u662f\u5426\u4e3a\u6570\u5b57\uff0c\u53ef\u4ee5\u7528\u4e00\u4e2a\u5b57\u7b26\u6570\u7ec4\u63a5\u53d7\u8f93\u5165\u7684\u5b57\u7b26\uff0c\u7136\u540e\u5faa\u73af\u5224\u65ad\u6bcf\u4e00\u4e2a\u5b57\u7b26\u662f\u5426\u4e3a\u6570\u5b57\uff0c\u5982\u679c\u5176\u4e2d\u4e00\u4e2a\u4e0d\u662f\u6570\u5b57\uff0c\u90a3\u4e48\u8fd4\u56de0\uff0c\u5426\u5219\u8fd4\u56de\u975e0\uff1b\u5305\u542b\u4e86\u5224\u65ad\u5c0f\u6570\u70b9\u7684\u4e2a\u6570\u548c\u8d1f\u6570\u7b26\u53f7-\u3002#include#includevoid main(){ char a[10]; int i,j,flag=0; /*flag\u6807\u8bb0\u5c0f\u6570\u70b9\u4e2a\u6570\uff0c\u5982\u679c\u8d85\u8fc7\u4e00\u4e2a\uff0c\u90a3\u4e48\u5c31\u4e0d\u662f\u6570\u5b57*/ printf("input a number:\n"); scanf("%s",a); for(i=0;a[i]!=0;i++) { if(i==0&&(a[i]=='+'||a[i]=='-')) { i++; continue; } /*\u5982\u679c\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e3a+\u6216-\uff0c\u4e0d\u5224\u65ad\u4e3a\u975e\u6570\u5b57\uff0c\u53ef\u80fd\u662f\u7b26\u53f7\u6807\u5fd7\uff0c\u7ee7\u7eed\u5411\u4e0b\u5224\u65ad*/ if(a[i]=='.') { flag++; if(flag>1) /*\u5982\u679c\u5c0f\u6570\u70b9\u4e2a\u6570\u8d85\u8fc7\u4e00\u4e2a\uff0c\u5219\u8868\u793a\u4e0d\u662f\u6570\u5b57*/ { break; } else if(flag==1) /*\u5982\u679c\u5c0f\u6570\u70b9\u4e2a\u6570\u4e3a1\u4e2a\uff0c\u5219\u53ef\u80fd\u4e3a\u5c0f\u6570\uff0c\u7ee7\u7eed\u5224\u65ad*/ { continue; } } j=isdigit(a[i]); if(j==0) { break; } } if(j!=0) printf("%s yes",a); else printf("%s no",a); getch();}

可以通过遍历字符串中每一个字符,利用asc码来判断是否是数字及数字的值。

我写的一个简单的程序,包含将字符串形式的整数,识别及转换。你参考吧。

#include <stdio.h>
#include <string.h>
int strToNum(char *str);
int isNum(char *str);
int p10(int m);
int main()
{
    char str[10];
    while(1)
    {
        memset(str,0,10);
        scanf("%s",str);
        if(isNum(str))
            printf("字符串对应的整数是:%d
",strToNum(str));
        else
            printf("错误!只能输入数字字符!
");
    }
    return 0;
}
int strToNum(char *str)//将字符串形式的整数转换成int型数字
{
    int len=strlen(str),i,sum=0;
    for(i=0;i<len;i++)
        sum+=(str[i]-'0')*p10(len-i-1);
    return sum;

}
int isNum(char *str)//判断字符串内容是否是一个整数,是返回1,否则返回0
{
    int len=strlen(str),i;
    for(i=0;i<len;i++)
        if(str[i]<'0' || str[i]>'9')
            return 0;
    return 1;
}
int p10(int m)//计算10的次方
{
    int i,sum=1;
    for(i=0;i<m;i++)
        sum*=10;
    return sum;
}


  • ...鎴戞兂闂笅鍦C璇█閲岄潰鎬庝箞鍒ゅ畾杈撳叆鐨鏄瀛楃杩樻槸鏁板瓧?
    绛旓細鍙互if璇彞鍒ゆ柇銆備緥濡傚垽鏂槸涓嶆槸鏁板瓧锛屽彲浠ョ敤涓嬮潰杩欐潯if璇彞鍒ゆ柇 if('0'<=ch && ch<='9')printf("ch is digit\n");姝ゅ锛屾彁閱掍竴涓嬶紝鏁板瓧涔熸槸瀛楃銆備綘璇寸殑鏄垽鏂槸瀛楁瘝杩樻槸鏁板瓧鍚э紵濡傛灉鎯冲垽鏂槸涓嶆槸瀛楁瘝锛岃繖涔堝垽鏂細if(('a'<=ch && ch<='z') || ('A'<=ch && ch<='Z'))printf(...
  • c璇█ 杈撳叆涓涓瀛楃,鍒ゆ柇鏄瓧姣,鏁板瓧,杩樻槸鐗规畩瀛楃?
    绛旓細鏍规嵁ascii鐮佸鍒ゆ柇鍗冲彲銆傜敱浜庢暟瀛楋紝澶у皬鍐欏瓧姣嶅潎鍒嗗埆涓鸿繛缁瓨鍌紝鎵浠ュ彧闇瑕佷笌瀵瑰簲鐨勬渶澶ф渶灏忓兼瘮杈冨嵆鍙‘瀹瀛楃绫诲瀷銆備唬鐮佸涓嬶細include <stdio.h>int main(){char c;c = getchar();//璇诲彇涓涓瓧绗︺俰f(c >='0' && c<='9')printf("鏄暟瀛梊n");else if(c >='a' && c<='z' ||...
  • c璇█ 杈撳叆涓涓瀛楃,鍒ゆ柇鏄瓧姣,鏁板瓧,杩樻槸鐗规畩瀛楃?
    绛旓細include<stdio.h> int main(){ char c ;while(scanf("%c",&c)!=EOF){ getchar();if(c >='0' && c<='9')printf("%c鏄暟瀛梊n",c);else if(c >='a' && c<='z' || c >='A' && c<='Z')printf("%c鏄瓧姣峔n",c);else printf("%c鏄壒娈瀛楃\n",c);} retu...
  • c璇█鍒ゆ柇杈撳叆鐨勫瓧绗︿覆?
    绛旓細杩欐槸璺熸眽瀛楃殑瀛樺偍鏂瑰紡鏈夊叧锛岃タ鏂瀛楃鐢ˋSCII鐮佺殑璇濓紝涓涓瓧鑺傚彲浠ヨ〃绀轰竴涓瓧绗︼紝鑰屾眽瀛楃敤鐨勬槸鍙屽瓧鑺傝〃绀轰竴涓眽瀛椼傞偅涔堬紝涓轰簡鍦ㄦ満鍣ㄥ唴閮ㄥ尯鍒咥SCII鐮佸拰姹夊瓧鏈哄唴鐮侊紝灏辫瀹氭眽瀛楃殑涓や釜瀛楄妭鐨勬渶楂樹负閮戒负1.渚嬪锛氭眽瀛椻滃晩鈥濈殑姹夊瓧鏈哄唴鐮佷负B0A1H 琛ㄧず鎴愬弻瀛楄妭鏄繖鏍风殑10110000 10100001 鏈▼搴忕敤鐨勫氨鏄鍒ゆ柇...
  • 濡備綍鐢C璇█缂栦竴涓▼搴,鏉ユ娴杈撳叆鐨勫瓧绗︿覆鏄笉鏄煇涓涓壒瀹氱殑瀛楃涓...
    绛旓細include <string.h> include <conio.h> define DEBUG 1 int main(){ char src[512] = "";char *dst = "asdf kjhf";int fg = 0;//鑴氭爣 char ch;printf("璇杈撳叆瀛楃涓,鍥炶溅缁撴潫杈撳叆:\n");ifdef DEBUG //姝ゆ柟娉曞彲浠ヤ笉鐢ㄥ洖杞﹀綋缁撴潫绗︿害鍙 while (ch = getch()) { printf("%c",ch...
  • C璇█鎬庝箞鍒ゆ柇杈撳叆鐨鏄暟瀛楄繕鏄瀛楃
    绛旓細浣犳槸鐭ラ亾鑷繁鎯宠杈撳叆鐨勬槸瀛楃杩樻槸鏁板瓧锛屽鍚э紵濡傛灉鏄繖鏍凤紝浣犲氨鍔犱竴涓爣蹇楃锛岀敤鏉鍒ゆ柇杈撳叆鐨涓滆タ鏄笉鏄綘瑕佺殑銆俰nt flag;flag = scanf("%d",&n);if(flag==1) printf("right\n");else printf("wrong\n");flag = scanf("%d",&n); //閫佽繑鎴愬姛璇诲叆鐨勬暟鎹釜鏁般傝緭鍏ュ瓧姣嶏紝flag涓0...
  • C璇█缂栫▼搴忓疄鐜鍒ゆ柇杈撳叆瀛楃涓銆傘傘傝瑙侀棶棰樿ˉ鍏
    绛旓細/ asdsa "asdsa"鏄洖鏂囥俛 : 2 d : 1 s : 2 Press any key to continue / include <stdio.h>#include <string.h>int Isrev(char *s) {int i,n = strlen(s);for(i = 0;i < (n + 1)/2;i++)if(s[i] != s[n - i - 1])return 0;return 1;}int main() {int i...
  • 濡備綍鍒ゆ柇鐢ㄦ埛杈撳叆鐨勫瓧绗︿覆鏄惁涓鸿〃绀哄垽鏂殑yes?姹C璇█绋嬪簭
    绛旓細鐢細 strcmp(huida,"yes")==0 鍒ゆ柇 涓 yes (澶у皬鍐欏尯鍒嗭級锛歩nclude<stdio.h> int main(){ char huida[10];int i=0;while(1){ printf("%d answer yes or no\n",i++);scanf(" %s",huida);if ( strcmp(huida,"yes")==0) printf("answer is yes\n");else {printf("Your...
  • C璇█闂杈撳叆鍑犱釜瀛楃,鎬庝箞鍒ゆ柇杈撳叆鐨鏄嚑涓瓧绗
    绛旓細涓鑸兘瑕佺害瀹氫竴涓粨鏉熸爣璁扮殑 姣斿 浠ユ崲琛屼綔涓虹粨鏉 鎴栬呬互#浣滀负缁撴潫 鎴栬 浠OF浣滀负缁撴潫绛夌瓑 濡傛灉涓嶇害瀹氱粨鏉 閭d箞鏄病鍔炴硶鐭ラ亾鏄惁杈撳叆瀹屾瘯鐨勩
  • c璇█绋嬪簭璁捐,杈撳叆涓涓瀛楃,璇鍒ゆ柇鏄瓧姣嶃佹暟瀛椼佽繕鏄壒娈婂瓧绗︹︹︾▼...
    绛旓細include<stdio.h> main(){ printf("鍑芥暟鍔熻兘锛氬杈撳叆鐨勫瓧绗杩涜璇嗗埆銆俓n");printf("浜😊璇疯緭鍏ヤ换鎰忓瓧绗︼細");char C;C=getchar();if('A'<=C&&C<='Z')printf("瀛楃绫诲瀷:澶у啓瀛楁瘝");else if('a'<=C&&C<='z')printf("瀛楃绫诲瀷:灏忓啓瀛楁瘝");else if('0'<=C&&C<='9')pr...
  • 扩展阅读:扫一扫题目出答案 ... c语言printf输出格式 ... c十十编程难学吗 ... c++输入输出代码 ... c十十编程要学多久 ... c语言26个字母对照表 ... c语言标识符号一览表 ... c语言获取用户输入 ... c如何判断输入的是数字 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网