彭尼玛 发表于 2018-9-11 17:23:59

真的看不懂VS!太不方便了

按照他说的规则这样做了,不行,把数字调大了也不行,你要我怎样,要怎样{:5_104:}鸡儿, VS真的这点太不方便了……
所以,我这里到底要输入什么数才能正确拼接起来?

claws0n 发表于 2018-9-11 17:33:50

你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦。换成数组,第一个可以

彭尼玛 发表于 2018-9-11 17:35:46

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

我是VS2017的还有一个notepad++,这个里面就没问题_(:з」∠)_

彭尼玛 发表于 2018-9-11 17:36:32

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

而且还不支持变长数组,真不知道VS搞什么……

彭尼玛 发表于 2018-9-11 17:37:22

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

主要是我是要指向一个卖脑壳函数,所以没办法用数组。。只能用指针

claws0n 发表于 2018-9-11 17:45:14

彭尼玛 发表于 2018-9-11 17:37
主要是我是要指向一个卖脑壳函数,所以没办法用数组。。只能用指针

不是呀,你要怎么写入指针?只有两个字节,你那是一串字耶。数组名也是指针,也可以调用,但是指针存储不了那么多数据。

彭尼玛 发表于 2018-9-11 18:49:57

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

我的指针是指向一个char类型的指针,因为卖脑壳函数,所以我可以用这个指针去表示这个块的首元素地址。
我这个是按照书上做的,用别的编译器就可以,VS太严格了,不行。

claws0n 发表于 2018-9-11 19:22:09

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

附上代码吧,晚一些帮你试试

彭尼玛 发表于 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");
就这三行代码,其他代码都不关紧要的_(:з」∠)_

无符号整形 发表于 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编译的。

claws0n 发表于 2018-9-12 00:14:37

彭尼玛 发表于 2018-9-11 19:49
悲剧了,代码吃了……
其实就
char *pcl;


{:10_282:} 原来你说的是这个,掉进 VS 的大坑了~
strcpy_s(pcl, strlen("Dynamic string") + 1, "Dynamic String");

Hitdongfeng 发表于 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();
}

彭尼玛 发表于 2018-9-12 13:24:16

Hitdongfeng 发表于 2018-9-12 12:36
#include
#include
#include


明白了,谢谢_(:з」∠)_

彭尼玛 发表于 2018-9-12 13:26:46

无符号整形 发表于 2018-9-11 20:35
字符串空间太小了
strlen是字符串长度
(strlen+1)*sizeof(char)才是字符串空间大小。


对对对,调试是真的厉害_(:з」∠)_

Hitdongfeng 发表于 2018-9-12 17:15:16

彭尼玛 发表于 2018-9-12 13:24
明白了,谢谢_(:з」∠)_

不用客气{:10_277:}
页: [1]
查看完整版本: 真的看不懂VS!太不方便了