鱼C论坛

 找回密码
 立即注册
查看: 80|回复: 4

[已解决]不同编译器不同结果

[复制链接]
最佳答案
161 
发表于 2020-9-20 00:17:13 | 显示全部楼层 |阅读模式
10鱼币
写了一个函数,将两字符串连接,要求用指针实现,程序如下,可是此程序在 VC++6.0 编译正常,运行结果正常,但最后有错;在 DEV_C++ 中编译运行则完全正常。问题来了:是什么情况引起的 VC++6.0 运行最后出错,如何改进,避免类似的情况再次发生。

  1. // 写一个函数,将两个字符串连接
  2. #include <stdio.h>
  3. #include <string.h>

  4. void connect(char *p1,char *p2);

  5. int main()
  6. {
  7.     char str1[] = "abcdefghijklm";
  8.         char str2[] = "nopqrstuvwxyz";
  9.         char *p1,*p2;
  10.         p1 = str1;
  11.         p2 = str2;
  12.     connect(p1,p2);
  13.         printf("\n");
  14. }

  15. void connect(char *p1,char *p2)
  16. {
  17.     int i,len1,len2;
  18.         len1 = strlen(p1);
  19.         len2 = strlen(p2);
  20.         for (i = 0;i < len2;i++)
  21.         {
  22.             *(p1 + len1 + i) = *(p2 + i);
  23.         }
  24.         printf("%s\n",p1);
  25. }
复制代码



                               
登录/注册后可看大图

最佳答案
2020-9-20 00:17:14
这可能是 VC++6.0 不完全支持不定长数组的原因,我试了一下将第一个数组定义为固定长度数组,最后的内存不可读消息框就消失了

char str1[27] = "abcdefghijklm";
char str2[] = "nopqrstuvwxyz";

最佳答案

查看完整内容

这可能是 VC++6.0 不完全支持不定长数组的原因,我试了一下将第一个数组定义为固定长度数组,最后的内存不可读消息框就消失了 char str1[27] = "abcdefghijklm"; char str2[] = "nopqrstuvwxyz";
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
26 
发表于 2020-9-20 00:17:14 | 显示全部楼层    本楼为最佳答案   
这可能是 VC++6.0 不完全支持不定长数组的原因,我试了一下将第一个数组定义为固定长度数组,最后的内存不可读消息框就消失了

char str1[27] = "abcdefghijklm";
char str2[] = "nopqrstuvwxyz";
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
161 
 楼主| 发表于 2020-9-20 12:56:51 | 显示全部楼层
乐乐学编程 发表于 2020-9-20 10:42
这可能是 VC++6.0 不完全支持不定长数组的原因,我试了一下将第一个数组定义为固定长度数组,最后的内存不 ...

还真是这么个问题,谢谢啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
72 
发表于 2020-9-20 15:02:16 | 显示全部楼层
变长数组VC应该不支持吧,c99的特性不是所有编译器都能完全支持的
像VC不支持变长数组,估计也不能对数组特定某一元素初始化(没试过),但dev是支持的
像dev,不能支持for(int i = 0; i < 10; i++)这种写法,不知道VC支持不?
只能说不同编译器对c99的接受程度不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
最佳答案
161 
 楼主| 发表于 2020-9-20 16:34:38 | 显示全部楼层
巴巴鲁 发表于 2020-9-20 15:02
变长数组VC应该不支持吧,c99的特性不是所有编译器都能完全支持的
像VC不支持变长数组,估计也不能对数组 ...

for(int i = 0; i < 10; i++)这种写法,VC++6.0 也不支持,出现一处,7个报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2020-10-26 16:04

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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