将字符串大写并返回局部变量

2024-01-21

我正在尝试创建一个将字符串大写的过程,但我收到垃圾值和来自 gcc 的警告,提示我正在返回局部变量的地址。来自Python,我对这个问题感到困惑。 (不想在中使用东西<string.h>)

 2
 3
 4char* strcaps(const char *strlower)
 5{
 6  int len = 0;
 7  while (*strlower != '\0'){
 8    len++;
 9    strlower++;
10  }
11  char newStr[len + 1];
12  int i;
13  for (i = 0; i < len; i++)
14    newStr[i] = strlower[i] - 32;
    newStr[len + 1] = '\0';    //EDIT, just put this in.
15  return newStr;
16}
17
18int main(void)
19{
20  
21  
22  
23  printf("I expect capitalized version of edgar, I got %s\n", strcaps("edgar"));
24
25
26  return 0;
27}

我猜我可以创建一个全局字符串,然后将其可变,但我宁愿将所有内容保留在函数 strcaps 中......这是我应该使用 malloc 的情况吗?

Thanks

编辑:刚刚意识到我从来没有放过'\0' 在新字符串的末尾,尽管我不确定这是否相关。


在C中你有两个选择。

1)您可以向函数传递一个指向字符串的指针,函数将修改它并返回 void

在这种情况下,您可以只使用原始字符串

2)你可以传递你的函数const char*并返回char *,但是你需要在函数内部进行 malloc

如果您在函数内部执行 malloc,则可以在您调用的程序的末尾使用该字符串(打印它或执行任何您想要的操作)free

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串大写并返回局部变量 的相关文章

随机推荐

  • 在带有 Weld 的 Spring Boot 环境中使用时,Omnifaces 2.x 失败

    最后 我在 Spring Boot 环境中成功引导了 Weld 如下所述here https stackoverflow com a 48140084 1907872 CDI 对于使用 Mojarra 的 JSF 和使用 Jersey 的
  • 如何通过.NET Core查找物理CPU核心数(不是逻辑SMT超线程)?

    我想检测实际物理核心的数量 而不是逻辑核心的数量 因为当更多线程竞争私有每核心缓存时 工作负载会出现负扩展 和 或具有足够高的 IPC 每个核心运行多个逻辑线程不会吞吐量的增加超过线程开销的增加 特别是对于无法完美扩展到大量内核的问题 或者
  • 如何获取“我的文档”的准确路径?

    在 C 中 获取 shell 在 Windows XP 和 Windows 7 中称为 我的文档 以及在 Vista 中称为 文档 的文件夹的完整路径名并不难 看获取我的文档的路径 https stackoverflow com quest
  • Guava Cache 的预加载值

    我有一个要求 我们从数据库加载静态数据以在 Java 应用程序中使用 任何缓存机制都应该具有以下功能 从数据库加载所有静态数据 一旦加载 这些数据就不会改变 从数据库加载新数据 启动时数据库中存在的数据不会改变 但可以添加新数据 延迟加载所
  • RDBMS/SQL 中的“关系”与“关系”?

    来自问题 关系 与 关系 https english stackexchange com questions 15208 relation versus relationship 15218 15218 RDBMS 或数据库理论 中 关系
  • 从多个拉取,仅推入一个

    这是我的目标工作流程 我有两个存储库 一个用于用 PHP 编码的网站框架 另一个用于自定义 PHP 代码 以添加客户想要的网站功能 我需要能够从客户端网站的两个存储库中提取数据 但只推送到一个存储库 这将是自定义代码 并且我只希望第二个存储
  • 如何将 CSS 文件包含在 CodeIgniter 中?

    我在应用程序文件夹所在的根目录中创建了一个资产文件夹 现在我有与应用程序同级的资产 现在当我尝试打开时http localhost CodeIgniter assets css bootstrap min css在网页中它不起作用 有人可以
  • Redux-observable:史诗般的笑话测试失败

    我按照以下步骤操作文档 https redux observable js org docs recipes WritingTests html来测试史诗 store dispatch type FETCH USER expect stor
  • 替换 CLLocationManager 的“目的”属性

    在 iOS 6 中 purposeCLLocationManager 的属性 用于描述使用位置服务的原因 property copy nonatomic NSString purpose 已被弃用 Apple 提出了哪种替代方案 如果有 替
  • 3 个并排的响应式 DIV 框 - 不在一起

    嗨 我需要帮助解决这个问题 我有 3 个 div 无论屏幕有多大或多小 都需要并排放置 但问题是 一旦屏幕宽度低于 400px 那么最后一个 div 就会位于其他 div 的下方 我怎样才能让它们保持内联 同时响应灵敏且居中 而不会对媒体查
  • 在特定模式上运行inspectdb

    我想用检查数据库 https docs djangoproject com en dev ref django admin inspectdb以便为新引入的表建立相应的模型 但看起来这个命令只查找public架构 而新表位于另一个架构中 是
  • Expo 应用程序卡在启动屏幕上 - 没有给出错误

    我的应用程序工作得很好 直到我开始尝试让它与 Firebase 一起工作 它现在冻结在启动屏幕上 没有给我任何错误 我尝试从 GitHub 中提取之前的版本 创建一个全新的 expo 项目并复制代码 然后重新安装所有软件包 但都不起作用 有
  • 当同一组件加载不同数据时,不会调用 ngOnInit

    我有一个 Angular 2 应用程序 并且像其他人一样使用路由器在视图之间导航 以下是我的特定组件的路径 path home view1 viewID component ViewComponent children path pane
  • C++ Class Typedef Struct 不命名类型

    我正在尝试在我的 C 程序中使用 typedef 结构 我开始编写以下代码 直到尝试向我的类添加返回模板 typedef 结构指针的方法时收到错误 结构源 h template
  • svn:无法打开请求的 SVN 文件系统

    我尝试在LAMPP环境中设置svn 我的 svn 存储库位于 var svn repos 以及repos目录属于root root 现在 当运行命令时 svn import test http localhost svn m init 我看
  • Cleartool - 列出对象及其标签

    我想递归地列出所有对象 包括文件和目录 及其标签 当我运行以下命令时 它只写入规则 它不会在任何对象上写入所有标签 cleartool ls r l view stable MYVOB MyProject 结果 版本 view stable
  • 调度程序代码在什么上下文中运行?

    调度程序代码有两种情况schedule 被调用 当进程主动调用schedule 定时器中断调用schedule 对于情况2 我认为schedule 在中断上下文中运行 但是第一种情况怎么样 它是否在调用它的进程的上下文中运行 还有其他场景会
  • 使用@PropertySource注释时@Value未解析。如何配置PropertySourcesPlaceholderConfigurer?

    我有以下配置类 Configuration PropertySource name props value classpath app config properties ComponentScan service public class
  • 如何从 numpy.datetime64 获取unix时间戳

    如何从 numpy datetime64 或 numpy datetime 获取 UNIX 时间 例如 np datetime 2012 08 08 13 37 00 为了解释单位 我认为你需要这样做 def get unixtime dt
  • 将字符串大写并返回局部变量

    我正在尝试创建一个将字符串大写的过程 但我收到垃圾值和来自 gcc 的警告 提示我正在返回局部变量的地址 来自Python 我对这个问题感到困惑 不想在中使用东西