如何返回变量?

2024-01-07

我正在编写一个程序,将字母翻译成摩尔斯电码,然后将它们传输到 LED 并闪烁。我无法返回值“.- -...”

#include <stdio.h>
#include <string.h>

char *encode()
{
  char *name = "AB";
  char name_m[100] = "";

  for (int i = 0; i < strlen(name); i++)
  {
    if (name[i] == 65)
    {
      strcat(name_m, ".- ");
    }
    else if (name[i] == 66)
    {
      strcat(name_m, "-...");
    }
  };
  printf("%s", name_m);
  
  return name_m;
}

int main()
{
    char *name_m;
    name_m = encode();
    printf("\n%s", name_m);
}
main.c:22:10: warning: function returns address of local variable [-Wreturn-local-addr]
   22 |   return name_m;
      |          ^~~~~~
.- -...
(null)

在 C 中,您无法返回对局部变量的引用(指针),因为当函数返回时它不再存在。

您需要将 te 缓冲区传递给该函数:

char *encode(char *name_m, const char *name)
{
  for (int i = 0; i < strlen(name); i++)
  {
    if (name[i] == 'A')
    {
      strcat(name_m, ".- ");
    }
    else if (name[i] == 'B')
    {
      strcat(name_m, "-...");
    }
  }
  printf("%s", name_m);
  
  return name_m;
}

动态分配它:

char *encode( const char *name)
{
  char *name_m = malloc(100);

  if(name_m)
  {
    for (int i = 0; i < strlen(name); i++)
    {
        if (name[i] == 'A')
        {
        strcat(name_m, ".- ");
        }
        else if (name[i] == 'B')
        {
        strcat(name_m, "-...");
        }
    }
    printf("%s", name_m);
  }
  
  return name_m;
}

或最糟糕的解决方案 - 将其定义为静态

char *encode( const char *name)
{
  static char name_m[100];

  if(name_m)
  {
    for (int i = 0; i < strlen(name); i++)
    {
        if (name[i] == 'A')
        {
        strcat(name_m, ".- ");
        }
        else if (name[i] == 'B')
        {
        strcat(name_m, "-...");
        }
    }
    printf("%s", name_m);
  }
  
  return name_m;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何返回变量? 的相关文章

随机推荐

  • Visual Studio 生产力电动工具配置设置

    我试图找出 Visual Studio Productivity Power Tools 设置的存储位置 我最近转移到 Visual Studio 的新实例 并且丢失了所有 Power Tools 正则表达式选项卡着色设置 它们显然不是正常
  • R 的plot() 中的默认字体是什么?

    我无法找出默认字体是什么plot R 中的选项是 我记得在某个地方黑体但我找不到任何消息来源来证实这个想法 有谁知道默认字体是什么plot 选项是以及如何更改字体 我知道有family选项 但字体的选择非常有限 我也知道有一个family下
  • 在 Pandas 中合并索引上的数据帧效率更高

    为什么在索引上合并 Pandas 中的数据帧比在列上合并数据帧更有效 更快 import pandas as pd Dataframes share the ID column df pd DataFrame ID 0 1 2 3 4 Jo
  • 为什么嵌套路由(react-router)不能与 nginx 容器 docker build 一起使用

    我想将我的项目部署到生产中 不幸的是我有一个搅拌机问题react router嵌套路由器方法 我已经尝试解决这个问题 3 小时了 但我能弄清楚 我不完全擅长 docker 和 nginx 配置 当我在开发中运行该项目时 它工作正常 甚至在正
  • 如何在asp.net core中的ajax中加载部分视图

    当我通过 ajax 更改分页时 我想加载每行的部分视图 我的部分负责表中每一行的按钮 我有如下的部分视图 model Guid td style width 150px div class btn group a class btn btn
  • Xcode 7.0.1 与 CocoaPods 应用程序编译错误退出代码 1

    我最近升级到最新的 Xcode 添加了一堆新代码并修复了所有正常的编译错误后 出现了以下错误 PhaseScriptExecution Copy Pods Resources Users dpreston10 Library Develop
  • 隐藏空父项 - JFace 的 TreeViewer

    我正在 JFace 中创建一个树查看器 我想实现一些目标 我在里面使用过滤器 过滤器效果很好 但并不完美 当我使用filter expandAll 方法中 过滤器过滤了树中的所有项目 但有一些事情确实很烦人 尽管它过滤了树的所有项目 但它不
  • 在 IntelliJ Idea 中仅显示尾随空格

    因此 我最近从 Eclipse 迁移到 IntelliJ IDEA 终极版 并且我对空格感到挑剔 At the moment I ve set IntelliJ IDEA to show me whitespace and it looks
  • 将react-router和react-router-relay从v1.x更新到v2.x(位置“/”与任何路由不匹配)

    我正在尝试在我的应用程序中将react router更新到v2 6 并将react router relay更新到v0 7 但我正在努力遵循更改日志来解决所有重大更改 我想我已经解决了所有更改 但仍然无法使其发挥作用 警告 react ro
  • 如何在c中将时间转换为c字符串?

    我想在 c 文件中的 txt 文件中写入一些内容 但需要使用当前时间戳作为后缀来命名该文件 就像 filename 2010 08 19 20 30 一样 所以我得先定义文件名字符数组 然后自己处理文件名 一个一个分配字符 有什么简单的方法
  • 将旧 Unix 日期转换为 Perl 并进行比较

    要求 我的文件名为 Rajesh 1202242219 数字只不过是一个日期 date y m d H M 格式 现在我正在尝试编写一个 perl 脚本来从文件名中提取数字并与当前系统日期和时间进行比较 并根据此比较的输出 使用 perl
  • jQuery DataTable 在按钮单击上设置标题

    在我看来 我有 2 个输入字段 1 个按钮和 1 个我正在使用的表格jQuery 数据表 https datatables net 我正在使用打印功能 https datatables net extensions buttons exam
  • 当用户名包含斜杠时,PuTTY PSCP 错误“不支持本地到本地复制”

    我正在尝试使用 PSCP 将文件从本地 Windows 计算机移动到远程 Linux 服务器 我已连接到 VPN 以便可以使用我的用户名和密码访问远程 Linux 计算机 我的 PSCP 传输命令是 pscp C Users usernam
  • 如何使用 XmlSerializer 反序列化到现有实例?

    是否可以使用 XmlSerializer 将其数据反序列化为类的现有实例而不是新实例 这在两种情况下会很有帮助 轻松地将两个 XML 文件合并到一个对象实例中 让对象构造器本身成为从 XML 文件加载其数据的构造器 如果默认情况下不可能 则
  • servlet 过滤器是否可以确定哪个 servlet 将处理请求

    我正在编写一个执行日志记录的过滤器 如果请求最终到达某个 servlet 我需要禁用此日志记录 有没有办法让过滤器知道哪个 servlet 将处理请求 您可能希望设置 servlet 过滤器映射 以便在请求特定 servlet 时不触发它
  • 如何在 Mac OS X 上启动 mongodb 服务?

    我已经在我的 Mac 上安装了 Mongodb 但该进程当前未运行 如何启动 Mongodb 服务以便可以开始使用命令 如果您使用自制程序在 macOS 上安装 MongoDB 请在终端中键入以下内容 在大多数情况下应该可以解决问题 bre
  • ROWNUM 在分页查询中如何工作?

    所以我想选择 Oracle DB 中的一系列行 我需要这样做 因为我的表中有数百万行 并且我想将结果分页给用户 如果您知道在客户端执行此操作的另一种方法 我正在使用 JavaFX 如果它很重要 但我不这样做认为通过网络发送所有数据以在客户端
  • IOS UIWebView:如何向 DOM 事件添加监听器?

    如何在 UIWebView 中添加 DOM 事件监听器 例如对于以下 html
  • 使

    在 Word 中 您可以将图像放置在页面上 并使文本在其周围流畅地排列 我想知道使用 CSS 可以达到什么程度 并指出它必须在 IE6 中工作 我已经使用浮动进行了某种关闭 但浮动子元素仍然 阻止 其上方的文本 所以它部分包裹 是否可以将子
  • 如何返回变量?

    我正在编写一个程序 将字母翻译成摩尔斯电码 然后将它们传输到 LED 并闪烁 我无法返回值 include