心之火 发表于 2020-8-26 22:09:54

求大佬们看一下,小甲鱼while语句作业的,为什么这样运行总是有问题??

#include<stdio.h>

int main()
{
    char str;
    int i=0,coust=0;
    printf("请输入一行英文句子:");
    scanf("%s",str);
    while(str!='\0')
    {
      if(str>='A'&&str<='Z')
         {
               coust++;
         }
      i++;
    }
    printf("你总共输入了%d个大写字母",coust);
    return 0;
}

qiuyouzhi 发表于 2020-8-26 22:12:44

我这里没有问题?

昨非 发表于 2020-8-26 22:13:23

在最上方添加宏定义
#define _CRT_SECURE_NO_WARNINGS
这好象是一种安全问题,挺常见的

baige 发表于 2020-8-26 22:13:52

什么问题?我这边没问题,你是要可以输入空格吗?

心之火 发表于 2020-8-26 22:15:34

昨非 发表于 2020-8-26 22:13
在最上方添加宏定义

这好象是一种安全问题,挺常见的

加上了也不行{:10_243:}

心之火 发表于 2020-8-26 22:16:53

qiuyouzhi 发表于 2020-8-26 22:12
我这里没有问题?

我是用codeblocks的,不跳错,就是运行结果不对

昨非 发表于 2020-8-26 22:17:14

qiuyouzhi 发表于 2020-8-26 22:12
我这里没有问题?

VS下会有scanf安全问题
““scanf”:此函数或变量可能不安全。”
https://s1.ax1x.com/2020/08/26/dfmco6.png

baige 发表于 2020-8-26 22:17:48

心之火 发表于 2020-8-26 22:16
我是用codeblocks的,不跳错,就是运行结果不对

scanf("%s")不接收空格,你是不是输入空格了?
如果是要接收空格:
#include<stdio.h>

int main()
{
        char str;
        int i=0,coust=0;
        printf("请输入一行英文句子:");
        gets(str);// 换成gets(str)就可以接收空格了
        while(str!='\0')
        {
                if(str>='A'&&str<='Z')
                {
                        coust++;
                }
                i++;
        }
        printf("你总共输入了%d个大写字母",coust);
        return 0;
}

心之火 发表于 2020-8-26 22:17:55

baige 发表于 2020-8-26 22:13
什么问题?我这边没问题,你是要可以输入空格吗?

对,就I Love FishC.com!这句

昨非 发表于 2020-8-26 22:17:57

心之火 发表于 2020-8-26 22:15
加上了也不行

那就奇怪了{:10_277:}

baige 发表于 2020-8-26 22:18:19

用gets

qiuyouzhi 发表于 2020-8-26 22:18:55

心之火 发表于 2020-8-26 22:16
我是用codeblocks的,不跳错,就是运行结果不对

那你用Dev-C++试试

qiuyouzhi 发表于 2020-8-26 22:19:34

昨非 发表于 2020-8-26 22:17
VS下会有scanf安全问题
““scanf”:此函数或变量可能不安全。”

我这里用Dev-C++,没有这个问题

baige 发表于 2020-8-26 22:20:24

#include<stdio.h>

int main()
{
      char str;
      int i=0,coust=0;
      printf("请输入一行英文句子:");
      gets(str);// 换成gets(str)就可以接收空格了
      while(str!='\0')
      {
                if(str>='A'&&str<='Z')
                {
                        coust++;
                }
                i++;
      }
      printf("你总共输入了%d个大写字母",coust);
      return 0;
}

心之火 发表于 2020-8-26 22:20:36

baige 发表于 2020-8-26 22:17
scanf("%s")不接收空格,你是不是输入空格了?
如果是要接收空格:

可以了,大佬,那为什么scanf语句不能做到这个呢?

baige 发表于 2020-8-26 22:21:41

心之火 发表于 2020-8-26 22:20
可以了,大佬,那为什么scanf语句不能做到这个呢?

scanf将读取并忽略空白字符(空白字符包含空格、回车和制表符);
遇到空白字符scanf就结束了

昨非 发表于 2020-8-26 22:21:55

心之火 发表于 2020-8-26 22:17
对,就I Love FishC.com!这句

你自己代码里判断条件是\n还敢带空格???{:10_256:}

昨非 发表于 2020-8-26 22:22:51

qiuyouzhi 发表于 2020-8-26 22:19
我这里用Dev-C++,没有这个问题

不同编译器有差异很正常,我用vs习惯了,感谢分享

心之火 发表于 2020-8-26 22:22:53

ok了,谢谢大佬们{:10_257:}

baige 发表于 2020-8-26 22:23:38

问题解决的话就结贴吧
页: [1]
查看完整版本: 求大佬们看一下,小甲鱼while语句作业的,为什么这样运行总是有问题??