当前位置: 首页 > 知识库问答 >
问题:

如何在C中连接多个C样式字符串?

任小云
2023-03-14

我必须生成字符串命令来使用微控制器配置设备,因此需要C风格的字符串而不是常规的std::string

每一步都需要按enter键或是/否enter键,我需要为每一步输入一行代码。代码示例:

#define YES "Y\n"
#define NO "N\n"
#define ENTER "\n"
#define DEFAULT_COMMAND_SIZE 30
    
static char command[DEFAULT_COMMAND_SIZE];

if (getChangePassword()) { // just a function that returns true if password has to be changed
    if (getTelnetPassword() != nullptr) {
        std::strcat(command, YES);
        std::strcat(command, getTelnetPassword()); // password is a char*, same as command
        std::strcat(command, ENTER);
    }
} else {
    std::strcat(command, NO);
}

我可以设法减少重复LOC的数量吗?

共有1个答案

廖弘量
2023-03-14

使用std::字符串,完成后将其复制到命令中:

演示:

#include <iostream>
#include <string>
#include <string.h>

#define YES "Y\n"
#define NO "N\n"
#define ENTER "\n"
#define DEFAULT_COMMAND_SIZE 30

static char command[DEFAULT_COMMAND_SIZE];

bool getChangePassword()
{
  return true;
}

char *getTelnetPassword()
{
  return (char*)"testpassword";
}

int main()
{
  std::string scommand;
  if (getChangePassword()) { // just a function that returns true if password has to be changed
    if (getTelnetPassword() != nullptr) {
      scommand += YES;
      scommand += getTelnetPassword();
      scommand += ENTER;
    }
  }
  else {
    scommand = NO;
  }

  std::strcpy(command, scommand.c_str());

  std::cout << command;
}
 类似资料:
  • 问题内容: 我正在编写一个简单的程序,该程序将多个连接连接到不同的服务器以进行状态检查。所有这些连接都是按需构建的;最多可以同时创建10个连接。我不喜欢“每个套接字一个线程”的想法,因此我将所有这些客户端套接字都设置为“非阻塞”,然后将其放入select()池中。 效果很好,直到我的客户抱怨目标服务器停止响应时,等待时间太长才能获得错误报告。 我已经在论坛中检查了几个主题。有人建议可以使用alar

  • 问题内容: 我喜欢在python中如何执行以下操作: 基本上,它读取的是一行列表,其中每一个代表3D空间中的一个点,该点表示为三个数字,以逗号分隔 如何用C ++做到这一点而又不会太麻烦呢? 性能不是很重要,此解析仅发生一次,因此简单性更为重要。 PS我知道这听起来像是一个新手问题,但是相信我我已经用D语言编写了一个词法分析器(非常类似于C ),其中涉及逐个字符读取一些文本char并识别标记, 就

  • 问题内容: 我正在尝试快速连接多个字符串3: 编译时出现以下错误: 以前它可以迅速运行2。我不确定为什么它不再起作用了。 问题答案: OP提交的错误报告: SR-1122:无法对强制展开的值进行二进制运算符链的类型检查 该问题已解决(修复将于2017年1月3日提交给母版),因此在即将到来的Swift 3.1中不再是问题。 这似乎是与以下情况相关的错误(在Swift 2.2中仅存在于3.0中): 在

  • 问题内容: 我正在尝试连接Java中的字符串。为什么这不起作用? 问题答案: 你可以使用运算符来连接字符串: 被隐式转换为。

  • 实现 (Implementation) 现在,我们将看到该计划的实际执行情况 - #include <stdio.h> #include <string.h> int main() { char s1[10] = "Taj"; char s2[] = "Mahal"; int i, j, n1, n2; n1 = strlen(s1); n2 = strlen(s2)

  • 我正在为即将到来的考试做练习题,但似乎无法找出一个问题,目标是: 编写一个C程序来读取两个字符串和。每个字符串的最大大小为25。形成两个名为和的新字符串。Lower由连接的和的小写字母组成,而包含两个字符串的大写字母的连接。 例如:输入: s1:绿蓝色 s2:客车 输出: 上:绿卡 下:蓝巴 我已经尝试了几天,但还没能完全弄清楚。 到目前为止,我有以下信息: