扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先你是想把字符串number当做返回值返回,这个想法是可以的,但是你需要了解几个知识:
创新互联专注于石拐网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供石拐营销型网站建设,石拐网站制作、石拐网页设计、石拐网站官网定制、微信小程序服务,打造石拐网络公司原创品牌,更为您提供石拐网站排名全网营销落地服务。
1. 局部变量占用的空间在函数返回之后就销毁了,你如果想返回字符串指针number,需要先malloc动态申请内存,这样number的空间就不会被销毁。
2. 你的函数返回值和函数定义不匹配,定义中是char,而number是char*类型,所以你如果想动态申请内存,然后返回指针,就把函数定义改为char*。
3. 主函数中%c是打印字符,如果打印字符串是%s。
还有一个办法是把number字符串指针作为函数参数传入,在主函数中定义一个number字符串,调用这个函数并传入number,就可以对number字符串修改了,这个办法无需显式的返回值。
首先要明白一点儿,C语言中字符串也是按一个一个字符存在""字符数组""中的哦! 用个数组作为队列来存放
例如:int a[100] 将这个数组用在你要接收字符的函数里,将接收的字符按i递增存放在a[]里
接收时用个for(i=0;i++;i=100)
{
a[i]=接收字符
}
这样a[0]里装的是第一个接收字符,a[1]是第二个,依次类推,字符串就被接收到a[]里了
输出时同理再用个for循环就可以了,例如
for(i=0;i++;i=100)
{
printf a[i]
}
当然要返回的字符串若是要用在其它的函数里也可以再定义个变量例如temp
可以temp=a[i]反正整个字符串都被保存在了数组a[]里,想怎么用可以了!
以上只是算法,具体代码还得根据自己需要多动手训练哦!
别听 楼上 的 瞎说, 也 别 百度 了, 都是 错 的, 我 告诉 你 正确 答案
函数 中 的 字符 串 在 函数 结束 的 时候 会 自动 被 释放 掉, 所以 即使 返回 char* 指向 的
也 就是 原 函数 字符串 的 地址, 访问 的 是 一个 系统 没有 分配 给 程序 的 内存, 虽然 编译器 不会 报错, 但 语法 绝对 是 错误 的,而且 你 不一定 能 得到 一个 正确 的 结果
三种 解决 方法:
1, struct ret { char a[100]; }; 返回 一个 结构, 结构里面 包含 字符串
2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函数 里 开 一个 动态 的 字符串, 这个 可以 返回, 不过 动态 内存 需要 手动 free 掉
3, 这个 不是 c语言 了, 调用 c++ 里面 的 string 类型, 也是 最简单 的 办法, 省心, 安全
要返回字符串 需要返回char*类型
需要注意的是 返回的字符串 不能是该函数的局部变量,否则会导致出错
可以是参数字符串,全局变量,静态局部变量,或者动态分配的内存
比如
char *my_str_cpy(char *d, char *s)
{
char *p=d;
while(*p++=*s++);
return d;//返回参数字符串。
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流