不同编译器不同结果
写了一个函数,将两字符串连接,要求用指针实现,程序如下,可是此程序在 VC++6.0 编译正常,运行结果正常,但最后有错;在 DEV_C++ 中编译运行则完全正常。问题来了:是什么情况引起的 VC++6.0 运行最后出错,如何改进,避免类似的情况再次发生。// 写一个函数,将两个字符串连接
#include <stdio.h>
#include <string.h>
void connect(char *p1,char *p2);
int main()
{
char str1[] = "abcdefghijklm";
char str2[] = "nopqrstuvwxyz";
char *p1,*p2;
p1 = str1;
p2 = str2;
connect(p1,p2);
printf("\n");
}
void connect(char *p1,char *p2)
{
int i,len1,len2;
len1 = strlen(p1);
len2 = strlen(p2);
for (i = 0;i < len2;i++)
{
*(p1 + len1 + i) = *(p2 + i);
}
printf("%s\n",p1);
}
https://xxx.ilovefishc.com/album/202009/19/234606zyfzkuzou2y7ikq4.jpg
这可能是 VC++6.0 不完全支持不定长数组的原因,我试了一下将第一个数组定义为固定长度数组,最后的内存不可读消息框就消失了
char str1 = "abcdefghijklm";
char str2[] = "nopqrstuvwxyz"; 乐乐学编程 发表于 2020-9-20 10:42
这可能是 VC++6.0 不完全支持不定长数组的原因,我试了一下将第一个数组定义为固定长度数组,最后的内存不 ...
还真是这么个问题,谢谢啦! 变长数组VC应该不支持吧,c99的特性不是所有编译器都能完全支持的
像VC不支持变长数组,估计也不能对数组特定某一元素初始化(没试过),但dev是支持的
像dev,不能支持for(int i = 0; i < 10; i++)这种写法,不知道VC支持不?
只能说不同编译器对c99的接受程度不一样 巴巴鲁 发表于 2020-9-20 15:02
变长数组VC应该不支持吧,c99的特性不是所有编译器都能完全支持的
像VC不支持变长数组,估计也不能对数组 ...
for(int i = 0; i < 10; i++)这种写法,VC++6.0 也不支持,出现一处,7个报错
页:
[1]