鱼C论坛

 找回密码
 立即注册
查看: 1548|回复: 5

[已解决]如何定义一个可改动的字符串函数

[复制链接]
发表于 2019-12-18 16:29:20 | 显示全部楼层 |阅读模式
9鱼币
#include <stdio.h>

char * m(int num[],int i);
char * m(int num[],int i)//将整形数组中的前i个数据转化为字符型
{
        int j = 0;
        for(;i>0;i--)
        {
                m[j] = (char)num;//提示这里的m为常数型,只能读取,所以该如何定义函数,使得字符串可以修改?
                j++;
        }
        return m;
}
int main(void)
{
        int array[12] = {48,49,50,51};
        int i = 5;
        printf("%s",m(array,i));
       
        return 0;
}//怎么定义才能使它可以改动啊!
最佳答案
2019-12-18 16:29:21
你问问题首先是要别人看懂。
不知所云的问题真的很让人恼火。
另外,我到现在仍然不知道你”加上以后“,代码改成什么样了。

  1. #define _Out_
复制代码
并没有什么实际意义,提醒这个位置的参数是作为返回值的而已。你可以把_Out_当作注释。

直接给完整代码吧
  1. #include <stdio.h>
  2. #define _Out_  

  3. char * m(int num[], int i, char _Out_ ret[])
  4. {
  5.     int j = 0;
  6.     for (j=0;j<i;++j)
  7.     {
  8.         ret[j] = (char)num[j];
  9.     }
  10.           return ret;
  11. }

  12. int main(void)
  13. {
  14.     int array[12] = {48,49,50,51};
  15.     char ret[255];
  16.     int i = 5;
  17.     printf("%s",m(array,i,ret));
  18.       
  19.     return 0;
  20. }
复制代码

162825.png

最佳答案

查看完整内容

你问问题首先是要别人看懂。 不知所云的问题真的很让人恼火。 另外,我到现在仍然不知道你”加上以后“,代码改成什么样了。 并没有什么实际意义,提醒这个位置的参数是作为返回值的而已。你可以把_Out_当作注释。 直接给完整代码吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-18 16:29:21 | 显示全部楼层    本楼为最佳答案   
你问问题首先是要别人看懂。
不知所云的问题真的很让人恼火。
另外,我到现在仍然不知道你”加上以后“,代码改成什么样了。

  1. #define _Out_
复制代码
并没有什么实际意义,提醒这个位置的参数是作为返回值的而已。你可以把_Out_当作注释。

直接给完整代码吧
  1. #include <stdio.h>
  2. #define _Out_  

  3. char * m(int num[], int i, char _Out_ ret[])
  4. {
  5.     int j = 0;
  6.     for (j=0;j<i;++j)
  7.     {
  8.         ret[j] = (char)num[j];
  9.     }
  10.           return ret;
  11. }

  12. int main(void)
  13. {
  14.     int array[12] = {48,49,50,51};
  15.     char ret[255];
  16.     int i = 5;
  17.     printf("%s",m(array,i,ret));
  18.       
  19.     return 0;
  20. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-18 17:13:06 | 显示全部楼层
。。。把函数名当返回值使,这是vb的用法把。。
C里没这种用法,你把m定义成函数,那么它就是个函数,跟返回值没有关系。

另外,C里尽量不要直接返回字符串指针,如果一定要返回,那么一定要明确指针指向的空间是新申请的还是本来就存在的。

  1. #define _Out_   // 表示此形参作为返回值使用
  2. char * m(int num[], int i, char _Out_ ret[])//将整形数组中的前i个数据转化为字符型
  3. {
  4.                 int j = 0;
  5.                 for (j=0;j<i;++j)
  6.                 {
  7.                         ret[j] = (char)num;//提示这里的m为常数型,只能读取,所以该如何定义函数,使得字符串可以修改?
  8.                 }
  9.                 return ret;
  10. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-18 17:18:15 | 显示全部楼层
Croper 发表于 2019-12-18 17:13
。。。把函数名当返回值使,这是vb的用法把。。
C里没这种用法,你把m定义成函数,那么它就是个函数,跟返 ...

我的错,忘记了,但加上以后报错内容没有改变,还是不知道怎么定义可修改的字符串函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-18 17:57:54 | 显示全部楼层
首先,你的问的是个什么鬼?
什么叫“可修改的字符串函数”,什么是函数,什么是变量你搞清了么?
光看问题,我可以猜到函数指针那儿去,可以猜到虚函数那儿去,甚至可以猜到反射那儿去。
我完全是看你的代码才大概猜到你想要把m作为一个字符数组然后想要改变它的值
没有代码谁知道你说的是个什么鬼。

然后,我给你打的代码你也完全没看的样子,
然后就是“加上以后”,加上什么以后?变量申明么?
非要别人来猜你的代码么?

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
人造人 + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-18 22:20:26 | 显示全部楼层
Croper 发表于 2019-12-18 17:57
首先,你的问的是个什么鬼?
什么叫“可修改的字符串函数”,什么是函数,什么是变量你搞清了么?
光看问 ...

真的对不起,我这次仔细看了但是
#define _Out_   // 表示此形参作为返回值使用(这里不太懂,如果小甲鱼会讲的话,就不用麻烦你再讲了)
真的很不好意思,以后一定更认真的阅读大家的答案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-12 06:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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