晨曦之星 发表于 2020-5-30 16:33:28

一段代码在devc++可以运行,在vs2019上报错该怎么改?

本帖最后由 晨曦之星 于 2020-5-30 16:33 编辑

#include <stdio.h>

int main()
{
        char array;
        int i, j;

        scanf_s("%s", array);

        for (i = 0; i < 3; i++)
        {
                for (j = 0; j < 3; j++)
                {
                        printf("%c ", array);
                }
                printf("\n");
        }

        return 0;
}
我想实现输入123456789
打印
1 2 3
4 5 6
7 8 9
此代码可在devc++运行,但我在vs2019却无法运行,请问这到底是怎么一回事?

KevinHu 发表于 2020-5-30 16:36:04

https://blog.csdn.net/weixin_44093867/article/details/97525914
scanf_s()的参数没有传全

xiaosi4081 发表于 2020-5-30 16:37:33

scanf_s("%s" , 要赋值的数组,最大字符数);
代码:
#include <stdio.h>

int main()
{
      char array;
      int i, j;

      scanf_s("%s", array,9);

      for (i = 0; i < 3; i++)
      {
                for (j = 0; j < 3; j++)
                {
                        printf("%c ", array);
                }
                printf("\n");
      }

      return 0;
}

晨曦之星 发表于 2020-5-30 16:50:34

xiaosi4081 发表于 2020-5-30 16:37
scanf_s("%s" , 要赋值的数组,最大字符数);
代码:

打印出错呢。。

xiaosi4081 发表于 2020-5-30 16:52:45

晨曦之星 发表于 2020-5-30 16:50
打印出错呢。。

你想要的结果呢?

晨曦之星 发表于 2020-5-30 16:57:42

xiaosi4081 发表于 2020-5-30 16:52
你想要的结果呢?

这个是我在devc++的打印结果

晨曦之星 发表于 2020-5-30 17:00:19

KevinHu 发表于 2020-5-30 16:36
https://blog.csdn.net/weixin_44093867/article/details/97525914
scanf_s()的参数没有传全

加了数字后都是问号是怎么回事。

xiaosi4081 发表于 2020-5-30 17:04:09

这样试试:
#include <stdio.h>

int main()
{
      int array;
      int i, j;

      scanf_s("%d", array,9);

      for (i = 0; i < 3; i++)
      {
                for (j = 0; j < 3; j++)
                {
                        printf("%c ", array);
                }
                printf("\n");
      }

      return 0;
}

永恒的蓝色梦想 发表于 2020-5-30 17:07:05

晨曦之星 发表于 2020-5-30 17:00
加了数字后都是问号是怎么回事。

在代码第一行加上#define _CRT_SECURE_NO_WARNINGS然后把 scanf_s 改成 scanf

晨曦之星 发表于 2020-5-30 17:30:26

xiaosi4081 发表于 2020-5-30 17:04
这样试试:

这样打出来还是问号

晨曦之星 发表于 2020-5-30 17:31:59

永恒的蓝色梦想 发表于 2020-5-30 17:07
在代码第一行加上然后把 scanf_s 改成 scanf

谢谢大哥,这样确实可以了,但会出现一个弹窗,还有可以解释一下原理吗,我看不懂{:5_100:}

永恒的蓝色梦想 发表于 2020-5-30 17:37:00

晨曦之星 发表于 2020-5-30 17:31
谢谢大哥,这样确实可以了,但会出现一个弹窗,还有可以解释一下原理吗,我看不懂

第6行改为 array,否则 \0 就写漏了。

晨曦之星 发表于 2020-5-30 17:40:52

永恒的蓝色梦想 发表于 2020-5-30 17:37
第6行改为 array,否则 \0 就写漏了。

好的谢谢{:5_110:}
页: [1]
查看完整版本: 一段代码在devc++可以运行,在vs2019上报错该怎么改?