VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 509|回复: 4

[已解决]各位老师,请问我这个错在那里,没有任何返回值,

[复制链接]
76_avatar_middle
最佳答案
0 
在线会员 发表于 2022-1-22 10:05:47 | 显示全部楼层 |阅读模式
//函数功能 根据 INbbb的值 返回 字符串OUTccc  数值OUTddd  及字符个数OUTaaa 的值
int OUTaaa(int INbbb, char* OUTccc, int* OUTddd)
{
        if (INbbb=0)
        {
                *OUTddd=0;
                OUTccc = "00001111";
        }
        else if (INbbb = 1)
        {
                *OUTddd=1;
                OUTccc = "1111000011110000";
        }
       
        else
        {
               
        }
        return strlen(OUTccc);// 返回字符的长度
}

int main()
{
        int aa = 0, bb = 1;
        int *dd = 0;
        char* cc= "1010";
        OUTaaa(bb, cc, dd);// 调用函数
        cout << aa << endl;
        cout << cc << endl;
        cout << dd << endl;
        return 0;
}
最佳答案
41_avatar_small
2022-1-22 14:53:46
一般“==”是警告,一般不会出错,只是阅读上有难度,规范上是需要用“==”的,这里主要问题在于你对字符数组理解有偏差,还有简单的方式能不要用指针就不要用指针,新手理解难度较高,其实字符数组你直接传递字符定义的值,就是将第一个指针传递进函数中了,我修改了,你自己在琢磨吧

int OUTaaa(int INbbb, char* OUTccc, int* OUTddd)
{
        if (INbbb==0)
        {
                *OUTddd=0;
                //OUTccc = "00001111";
                strcpy(OUTccc,"00001111");
        }
        else if (INbbb == 1)
        {
                *OUTddd=1;
                //OUTccc = "1111000011110000";
                strcpy(OUTccc,"1111000011110000");
        }

        else
        {

        }
        return strlen(OUTccc);// 返回字符的长度
}

int main()
{
        int aa = 0, bb = 1;
        int dd = 0;
        char cc[17]= "2222";
        OUTaaa(bb, cc, &dd);// 调用函数
        cout << aa << endl;
        cout << cc << endl;
        cout << dd << endl;
        system("pause");
        return 0;
}

其实我的字符拷贝也是会碰到溢出的,我看你最多"1111000011110000"只有16位,就直接定义了一个17位的字符数组,想要安全,最好再研究一下安全赋值函数




上一篇:使用delete释放内存报错
下一篇:函数 执行没有反应
75_avatar_middle
最佳答案
23 
online_supermod 发表于 2022-1-22 10:41:50 | 显示全部楼层
我感觉问题出现在if (INbbb = 1)  你试试if (INbbb == 1)
76_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-1-22 11:15:09 | 显示全部楼层
using namespace std;
int OUTaaa(int INbbb, char* OUTccc, int* OUTddd);
//函数功能 根据 INbbb的值(入参) 返回 字符串OUTccc 数值OUTddd 及字符个数OUTaaa 的值
int OUTaaa(int INbbb, char* OUTccc, int* OUTddd)
{
        if (INbbb==0)
        {
                *OUTddd=0;
                OUTccc = "0000abcd";
        }
        else if (INbbb == 1)
        {
                *OUTddd=1;
                OUTccc = "1111abcd";
        }
       
        else
        {
               
        }
        return strlen(OUTccc);// 返回字符的长度
}

int main()
{
        int aa = 0, bb = 1;
        char* cc = "abcd";
        int *dd = 0;
       
        aa = OUTaaa(bb, cc, dd);// 调用函数
        cout << aa << "  是aa的值" << endl;
        cout << bb << "  是bb的值" << endl;
        cout << cc << "  是cc的值 字符个数是" << strlen(cc) << endl;
        cout << dd << "  是dd的值" << endl;

        return 0;
}

还是没有任何反应
41_avatar_middle
最佳答案
2 
online_vip 发表于 2022-1-22 14:53:46 | 显示全部楼层    本楼为最佳答案   
bestAnswer
一般“==”是警告,一般不会出错,只是阅读上有难度,规范上是需要用“==”的,这里主要问题在于你对字符数组理解有偏差,还有简单的方式能不要用指针就不要用指针,新手理解难度较高,其实字符数组你直接传递字符定义的值,就是将第一个指针传递进函数中了,我修改了,你自己在琢磨吧

int OUTaaa(int INbbb, char* OUTccc, int* OUTddd)
{
        if (INbbb==0)
        {
                *OUTddd=0;
                //OUTccc = "00001111";
                strcpy(OUTccc,"00001111");
        }
        else if (INbbb == 1)
        {
                *OUTddd=1;
                //OUTccc = "1111000011110000";
                strcpy(OUTccc,"1111000011110000");
        }

        else
        {

        }
        return strlen(OUTccc);// 返回字符的长度
}

int main()
{
        int aa = 0, bb = 1;
        int dd = 0;
        char cc[17]= "2222";
        OUTaaa(bb, cc, &dd);// 调用函数
        cout << aa << endl;
        cout << cc << endl;
        cout << dd << endl;
        system("pause");
        return 0;
}

其实我的字符拷贝也是会碰到溢出的,我看你最多"1111000011110000"只有16位,就直接定义了一个17位的字符数组,想要安全,最好再研究一下安全赋值函数
76_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2022-1-22 15:27:46 | 显示全部楼层
严重性        代码        说明        项目        文件        行
错误        C4996        'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.        TESTfun        g:\新建文件夹\vc\yyx工程\函数调用测试\testfun\testfun\testfun.cpp        18
各位老师,请问我这个错在那里,没有任何返回值,
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-12-8 17:46

Powered by CcTry.CoM

© 2009-2021 cctry.com

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