鱼C论坛

 找回密码
 立即注册
查看: 2025|回复: 16

[已解决]真的看不懂VS!太不方便了

[复制链接]
发表于 2018-9-11 17:23:59 | 显示全部楼层 |阅读模式

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

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

x
QQ图片20180911171442.png QQ图片20180911171553.png 按照他说的规则这样做了,不行,把数字调大了也不行,你要我怎样,要怎样鸡儿, VS真的这点太不方便了……
所以,我这里到底要输入什么数才能正确拼接起来?
最佳答案
2018-9-11 20:35:49
彭尼玛 发表于 2018-9-11 19:49
悲剧了,代码吃了……
其实就
char *pcl;

字符串空间太小了
strlen是字符串长度
(strlen+1)*sizeof(char)才是字符串空间大小。
另外其他编译器的变长数组是非标准扩展。
你只有使用VS之类的严谨的编译器才能培养你的编程思路,毕竟自己会造轮子,有没有轮子都不用怕,有轮子只是方便一点,bug少一点罢了。
变长数组可以使用vector(数组实现)或者list(双向链表实现)来实现。
另外Debug模式是设置成程序调试的,调试好或者觉得找不出出错地方可以调成Release模式,再使用“本地Windows调试器”,VS就会帮你找出出错代码位置,差不过一两行。
程序发布的时候是使用Release编译的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-11 17:33:50 From FishC Mobile | 显示全部楼层
你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦。换成数组,第一个可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-11 17:35:46 | 显示全部楼层
claws0n 发表于 2018-9-11 17:33
你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦 ...

我是VS2017的  还有一个notepad++,这个里面就没问题_(:з」∠)_
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-11 17:36:32 | 显示全部楼层
claws0n 发表于 2018-9-11 17:33
你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦 ...

而且还不支持变长数组,真不知道VS搞什么……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-11 17:37:22 | 显示全部楼层
claws0n 发表于 2018-9-11 17:33
你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦 ...

主要是我是要指向一个卖脑壳函数,所以没办法用数组。。只能用指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 17:45:14 From FishC Mobile | 显示全部楼层
彭尼玛 发表于 2018-9-11 17:37
主要是我是要指向一个卖脑壳函数,所以没办法用数组。。只能用指针

不是呀,你要怎么写入指针?只有两个字节,你那是一串字耶。数组名也是指针,也可以调用,但是指针存储不了那么多数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-11 18:49:57 | 显示全部楼层
claws0n 发表于 2018-9-11 17:45
不是呀,你要怎么写入指针?只有两个字节,你那是一串字耶。数组名也是指针,也可以调用,但是指针存储不 ...

我的指针是指向一个char类型的指针,因为卖脑壳函数,所以我可以用这个指针去表示这个块的首元素地址。
我这个是按照书上做的,用别的编译器就可以,VS太严格了,不行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 19:22:09 | 显示全部楼层
彭尼玛 发表于 2018-9-11 18:49
我的指针是指向一个char类型的指针,因为卖脑壳函数,所以我可以用这个指针去表示这个块的首元素地址。
...

附上代码吧,晚一些帮你试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-11 19:49:59 | 显示全部楼层
claws0n 发表于 2018-9-11 19:22
附上代码吧,晚一些帮你试试

悲剧了,代码吃了……
其实就
char *pcl;
pcl=(char *)malloc(strlen("Dynamic String")+1);
strcpy(pcl,"Dynamic String");
就这三行代码,其他代码都不关紧要的_(:з」∠)_
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-11 20:35:49 | 显示全部楼层    本楼为最佳答案   
彭尼玛 发表于 2018-9-11 19:49
悲剧了,代码吃了……
其实就
char *pcl;

字符串空间太小了
strlen是字符串长度
(strlen+1)*sizeof(char)才是字符串空间大小。
另外其他编译器的变长数组是非标准扩展。
你只有使用VS之类的严谨的编译器才能培养你的编程思路,毕竟自己会造轮子,有没有轮子都不用怕,有轮子只是方便一点,bug少一点罢了。
变长数组可以使用vector(数组实现)或者list(双向链表实现)来实现。
另外Debug模式是设置成程序调试的,调试好或者觉得找不出出错地方可以调成Release模式,再使用“本地Windows调试器”,VS就会帮你找出出错代码位置,差不过一两行。
程序发布的时候是使用Release编译的。

点评

VS的强大的Runtime Debugger真的不是闹着玩的  发表于 2018-9-11 20:39
很明显是数组越界  发表于 2018-9-11 20:36
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-12 00:14:37 | 显示全部楼层
彭尼玛 发表于 2018-9-11 19:49
悲剧了,代码吃了……
其实就
char *pcl;

原来你说的是这个,掉进 VS 的大坑了~
strcpy_s(pcl, strlen("Dynamic string") + 1, "Dynamic String");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-12 12:36:28 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{

        char *pcl;
        char *s = "Dynamic String";
        int len = strlen(s);

        pcl = (char *)malloc(len + 1);
        strcpy_s(pcl, len+1, "Dynamic String");

        printf("%s\n", pcl);

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

使用道具 举报

 楼主| 发表于 2018-9-12 13:24:16 | 显示全部楼层
Hitdongfeng 发表于 2018-9-12 12:36
#include
#include
#include

明白了,谢谢_(:з」∠)_
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-12 13:26:46 | 显示全部楼层
无符号整形 发表于 2018-9-11 20:35
字符串空间太小了
strlen是字符串长度
(strlen+1)*sizeof(char)才是字符串空间大小。

对对对,调试是真的厉害_(:з」∠)_
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-12 17:15:16 | 显示全部楼层
彭尼玛 发表于 2018-9-12 13:24
明白了,谢谢_(:з」∠)_

不用客气
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-30 09:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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