c - 如何从c中的函数返回字符串
问题描述
我帮助我的朋友是硬件,我遇到了一个奇怪的停电。我正在使用一个指定从给定字符串“解密”消息的函数,该过程工作正常(我调试了它以检查)但我忘记了如何将函数中的值返回到我没有触及的主程序在 C 语言中呆了一段时间,所以我在这里有点昏昏欲睡
代码(已编辑):
void func(char* str, char* new_str, int i, int k) {
if (i < strlen(str)) {
if ((str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')) {
new_str[k] = str[i];
func(str, new_str, i + 1, k + 1);
}
else {
func(str, new_str, i + 1, k);
}
}
}
int main()
{
char str[100] = "l#e%i&n^&%a^&%D$%o#@T(r*e^^t*t(e%$L"; //Iterate from end to start.
char new_str[100] = ""; //Use k index here.
func(str, new_str, 0, 0);
printf("%s", new_str);
return 0;
}
解决方案
您返回指向字符串第一个字符的指针(引用)。
char* someFunction() {
char* newString = malloc( sizeof( char ) * 13 );
strncpy( newString, "hello world!", 12 );
newString[12] = '\0';
return newString;
}
如果您的字符串无法修改(因为它是硬编码的),则返回一个const char*
const char* someFunction2() {
return "hello world!";
}
在这两种情况下,返回值都是一个地址,指向一个字符。终止字符串的第一个字符的 C 约定'\0'
用于查找字符串的结尾。
推荐阅读
- java - 将 weblogic 升级到 12.2.1.3.0 并将 java 从 1.7 升级到 1.8 - 异常 WELD-001408 未满足的依赖项
- openmodelica - OpenModelica 中的调用函数
- python - Odoo 10:无法在 python 中使用元素树解析日期字段
- python - 创建 pd.date_range 的 pandas 列
- python - (2002,“无法通过套接字'/tmp/mysql.sock'(2)连接到本地MySQL服务器”)
- php - 从数据库加载 Simplepie 提要 url
- ios - UIViewController 布局更改
- r - ggplot 在聚合年份极坐标直方图中用月份替换天数
- javascript - 从日期选择器复制值并设置焦点
- java - 聊天机器人问题