鱼C论坛

 找回密码
 立即注册
查看: 2388|回复: 12

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

[复制链接]
发表于 2020-5-30 16:33:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 晨曦之星 于 2020-5-30 16:33 编辑
#include <stdio.h>

int main()
{
        char array[9];
        int i, j;

        scanf_s("%s", array);

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

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

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

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

这是报错

这是报错

运行后出错

运行后出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 16:36:04 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 16:37:33 | 显示全部楼层
scanf_s("%s" , 要赋值的数组,最大字符数);
代码:
#include <stdio.h>

int main()
{
        char array[9];
        int i, j;

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

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

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 16:50:34 | 显示全部楼层
xiaosi4081 发表于 2020-5-30 16:37
scanf_s("%s" , 要赋值的数组,最大字符数);
代码:

打印出错呢。。
批注 2020-05-30 164936.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 16:52:45 | 显示全部楼层

你想要的结果呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 16:57:42 | 显示全部楼层
xiaosi4081 发表于 2020-5-30 16:52
你想要的结果呢?

这个是我在devc++的打印结果
批注 2020-05-30 165702.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-30 17:00:19 | 显示全部楼层
KevinHu 发表于 2020-5-30 16:36
https://blog.csdn.net/weixin_44093867/article/details/97525914
scanf_s()的参数没有传全

加了数字后都是问号是怎么回事。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 17:04:09 | 显示全部楼层
这样试试:
#include <stdio.h>

int main()
{
        int array[9];
        int i, j;

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

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

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-30 17:07:05 | 显示全部楼层    本楼为最佳答案   
晨曦之星 发表于 2020-5-30 17:00
加了数字后都是问号是怎么回事。

在代码第一行加上
#define _CRT_SECURE_NO_WARNINGS
然后把 scanf_s 改成 scanf
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 17:30:26 | 显示全部楼层

这样打出来还是问号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 17:31:59 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-30 17:07
在代码第一行加上然后把 scanf_s 改成 scanf

谢谢大哥,这样确实可以了,但会出现一个弹窗,还有可以解释一下原理吗,我看不懂
批注 2020-05-30 172930.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

第6行改为 array[10],否则 \0 就写漏了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-30 17:40:52 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-30 17:37
第6行改为 array[10],否则 \0 就写漏了。

好的谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 17:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表