122Ml 发表于 2020-8-3 10:18:37

检测字符串中是否含数字

本帖最后由 122Ml 于 2020-8-3 10:18 编辑

#include <stdio.h>

int main()
{
        int count,i;
        char name;
       
        printf("请输入数值!:\n");
        scanf("%d",name);
       
        for(i=0;i<50;i++)
                {
                        if(name==1,2,3,4,5,6,7,8,9)
                                {
                                        count++;
                                        printf("测试\n");
                                }       
                }
       
        if(count==0)
        {
                printf("并未找到任何数值!\n");
        }
        return 0;
}
目的:检测输入字符串中是否含有数字,如果不含,则打印“并未找到任何数值”
测试时,一直打印“测试”,name一直等于1到9?
求大神帮助

zltzlt 发表于 2020-8-3 10:19:58

#include <stdio.h>

int main()
{
    int count, i;
    char name;

    printf("请输入数值!:\n");
    scanf("%s", name);

    for (i = 0; i < 50; i++)
    {
      if (name >= '1' && name <= '9')
      {
            count++;
            printf("测试\n");
      }
    }

    if (count == 0)
    {
      printf("并未找到任何数值!\n");
    }
    return 0;
}

122Ml 发表于 2020-8-3 10:20:00

可能是我name==1,2,3,4,5,6,7,8,9错了吧

zltzlt 发表于 2020-8-3 10:23:16

122Ml 发表于 2020-8-3 10:20
可能是我name==1,2,3,4,5,6,7,8,9错了吧

那块确实错了,不能这样判断

122Ml 发表于 2020-8-3 10:25:14

zltzlt 发表于 2020-8-3 10:19


还有一个问题,我输入一个数字,检测结果出现三个“测试”;输入任意字符,出现两个“测试”,这是什么原因

永恒的蓝色梦想 发表于 2020-8-3 10:27:11

122Ml 发表于 2020-8-3 10:25
还有一个问题,我输入一个数字,检测结果出现三个“测试”;输入任意字符,出现两个“测试”,这是什么原 ...

你用 %d 来输入字符串只能得到魔法。

zltzlt 发表于 2020-8-3 10:30:38

122Ml 发表于 2020-8-3 10:25
还有一个问题,我输入一个数字,检测结果出现三个“测试”;输入任意字符,出现两个“测试”,这是什么原 ...

不能使用 %d 输入字符串

122Ml 发表于 2020-8-3 10:31:25

永恒的蓝色梦想 发表于 2020-8-3 10:27
你用 %d 来输入字符串只能得到魔法。

没啊,改了%s还是这个问题
scanf("%s", name);

baige 发表于 2020-8-3 10:31:48

本帖最后由 baige 于 2020-8-3 10:43 编辑

#include <stdio.h>

int main()
{
      int count = 0,i = 0;//count没有初始化
      char name;
      
      printf("请输入数值!:\n");
      scanf("%s",name);//字符串数组用%s
      
      while(name!='\0')
      {
            if(name>='0'&&name<='9')
            {
                count++;
                printf("测试\n");
            }      
          ++i;
      }
      
      if(count==0)
      {
                printf("并未找到任何数值!\n");
      }
      printf("一共有%d数字",count);
      return 0;
}

sunrise085 发表于 2020-8-3 10:34:47

本帖最后由 sunrise085 于 2020-8-3 10:42 编辑

还有一个问题,我输入一个数字,检测结果出现三个“测试”;输入任意字符,出现两个“测试”,这是什么原因
这个问题是因为你的for循环导致的,当你输入不足50个的时候,后面的内容是不确定的。有可能就会出现符合条件的数字,所以不能用for循环,应该用while循环
#include <stdio.h>

int main()
{
    int count,i;
    char name;
   
    printf("请输入数值!:\n");
    scanf("%s",name);//这里应该用%s输入,因为你定义的是一个字符串数组
    i=-1;
    count=0;
    while(name[++i]!='\0')//这里不应该用你定义的长度来进行循环,应该按照你输入的长度进行循环
    {
      if(name>='1' && name<='9')//这里应该判断第i个字符是否在'1' '9' 之间
      {
            count++;
            printf("测试\n");
      }      
    }
    printf("i=%d,count=%d\n",i,count);//这里帮你添加了一个输出,可以看看结果
   
    if(count==0)
    {
      printf("并未找到任何数值!\n");
    }
    return 0;
}

122Ml 发表于 2020-8-3 10:36:42

baige 发表于 2020-8-3 10:31


emmmmm还是有个小问题:输入单个数字时,count依然等于0

baige 发表于 2020-8-3 10:37:20

122Ml 发表于 2020-8-3 10:36
emmmmm还是有个小问题:输入单个数字时,count依然等于0

修改了,

122Ml 发表于 2020-8-3 10:39:54

sunrise085 发表于 2020-8-3 10:34
这个问题是因为你的for循环导致的,当你输入不足50个的时候,后面的内容是不确定的。有可能就会出现符合 ...

谢啦!超级详细!
页: [1]
查看完整版本: 检测字符串中是否含数字