C错误 – 返回一个char数组
发布时间:2020-12-16 10:50:37 所属栏目:百科 来源:网络整理
导读:请考虑以下代码: char CeaserCrypt(char str[256],int key){ char encrypted[256],encryptedChar; int currentAsci; encrypted[0] = ' '; for(int i = 0; i strlen(str); i++) { currentAsci = (int)str[i]; encryptedChar = (char)(currentAsci+key); enc
请考虑以下代码:
char CeaserCrypt(char str[256],int key) { char encrypted[256],encryptedChar; int currentAsci; encrypted[0] = ' '; for(int i = 0; i < strlen(str); i++) { currentAsci = (int)str[i]; encryptedChar = (char)(currentAsci+key); encrypted[i] = encryptedChar; } return encrypted; } Visual Studio 2010出错,因为该函数返回一个数组.我该怎么办? 我的朋友告诉我将签名更改为void CeaserCrypt(char str [256],char encrypted [256],int key).但我不认为这是正确的.如何摆脱编译错误? 解决方法
返回类型应该是char *但这只会增加另一个问题.
加密是在CeaserCrypt的堆栈上“分配”的,并且在函数返回时可能无效.由于加密的长度与输入的长度相同,请执行以下操作: int len = strlen(str); char *encrypted = (char *) malloc(len+1); encrypted[len] = ' '; for (int i = 0; i < len; i++) { // ... } 不要忘记稍后释放缓冲区(使用free()). 编辑:@Yosy:不要觉得有必要复制/粘贴.使用它作为指针来改进您的编码实践.此外,为了满足批评者:使用上面的示例传递已分配的指向加密例程的指针. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Swift - 操作SQLite数据库(引用SQLite3库)
- c# – 将字节数组写入windows phone中的存储文件
- ruby-on-rails – 在rails中创建一个大的标签
- XML解析中SAX和XMLpull的区别
- c# – 在哪里可以找到一个好的示例ASP.NET数据库
- PostgreSQL在Linux上的恢复
- 解决Binary XML file line #6: : Error inflati
- c# – 在用户登录后更改HttpContext.Current.Use
- c – 在VS2010中的vector :: insert执行意外结果
- 如何使用Ruby 2.2.3和rest-client保存文件
热点阅读