真的看不懂VS!太不方便了
按照他说的规则这样做了,不行,把数字调大了也不行,你要我怎样,要怎样{:5_104:}鸡儿, VS真的这点太不方便了……所以,我这里到底要输入什么数才能正确拼接起来?
你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦。换成数组,第一个可以 claws0n 发表于 2018-9-11 17:33
你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦 ...
我是VS2017的还有一个notepad++,这个里面就没问题_(:з」∠)_ claws0n 发表于 2018-9-11 17:33
你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦 ...
而且还不支持变长数组,真不知道VS搞什么…… claws0n 发表于 2018-9-11 17:33
你用 vs 几?不是不方便,是太严格了, 先用 dev 吧,不会大呼小叫
pcl 是一个指针,只有四个字节,溢出啦 ...
主要是我是要指向一个卖脑壳函数,所以没办法用数组。。只能用指针 彭尼玛 发表于 2018-9-11 17:37
主要是我是要指向一个卖脑壳函数,所以没办法用数组。。只能用指针
不是呀,你要怎么写入指针?只有两个字节,你那是一串字耶。数组名也是指针,也可以调用,但是指针存储不了那么多数据。 claws0n 发表于 2018-9-11 17:45
不是呀,你要怎么写入指针?只有两个字节,你那是一串字耶。数组名也是指针,也可以调用,但是指针存储不 ...
我的指针是指向一个char类型的指针,因为卖脑壳函数,所以我可以用这个指针去表示这个块的首元素地址。
我这个是按照书上做的,用别的编译器就可以,VS太严格了,不行。 彭尼玛 发表于 2018-9-11 18:49
我的指针是指向一个char类型的指针,因为卖脑壳函数,所以我可以用这个指针去表示这个块的首元素地址。
...
附上代码吧,晚一些帮你试试 claws0n 发表于 2018-9-11 19:22
附上代码吧,晚一些帮你试试
悲剧了,代码吃了……
其实就
char *pcl;
pcl=(char *)malloc(strlen("Dynamic String")+1);
strcpy(pcl,"Dynamic String");
就这三行代码,其他代码都不关紧要的_(:з」∠)_ 彭尼玛 发表于 2018-9-11 19:49
悲剧了,代码吃了……
其实就
char *pcl;
字符串空间太小了
strlen是字符串长度
(strlen+1)*sizeof(char)才是字符串空间大小。
另外其他编译器的变长数组是非标准扩展。
你只有使用VS之类的严谨的编译器才能培养你的编程思路,毕竟自己会造轮子,有没有轮子都不用怕,有轮子只是方便一点,bug少一点罢了。
变长数组可以使用vector(数组实现)或者list(双向链表实现)来实现。
另外Debug模式是设置成程序调试的,调试好或者觉得找不出出错地方可以调成Release模式,再使用“本地Windows调试器”,VS就会帮你找出出错代码位置,差不过一两行。
程序发布的时候是使用Release编译的。 彭尼玛 发表于 2018-9-11 19:49
悲剧了,代码吃了……
其实就
char *pcl;
{:10_282:} 原来你说的是这个,掉进 VS 的大坑了~
strcpy_s(pcl, strlen("Dynamic string") + 1, "Dynamic String"); #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();
}
Hitdongfeng 发表于 2018-9-12 12:36
#include
#include
#include
明白了,谢谢_(:з」∠)_ 无符号整形 发表于 2018-9-11 20:35
字符串空间太小了
strlen是字符串长度
(strlen+1)*sizeof(char)才是字符串空间大小。
对对对,调试是真的厉害_(:з」∠)_ 彭尼玛 发表于 2018-9-12 13:24
明白了,谢谢_(:з」∠)_
不用客气{:10_277:}
页:
[1]