C 中字符串中所有可能的组合

2024-01-30

我正在尝试使用 C 打印字符串“abc”的所有可能组合。有人可以帮助指出我在这段代码中哪里出错了吗?我正在使用这里提到的算法:http://hackercs.com/videos/Combinations-of-a-String-Part-2/ http://hackercs.com/videos/Combinations-of-a-String-Part-2/感谢您的时间和帮助。 (BETWEEN,这里的目标是使用递归)

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


 void combination(char **curString,int allowedStart,char **outBuffer,int length)
{
//check for allowed chars.
// if not return.
// else
// for each char in the allowed char
// copy into buffer
//print buffer
//combine buffer and over next allowed chars
//remove from buffer.

if (allowedStart == length)
    return;
else    
   {
int curr;
for (curr = allowedStart;curr<length; curr++){
//need to copy 'a' into outbuffer and keep appending to outbuffer.
printf("allowedStart = %d\n",allowedStart);
printf("curr = %d\n",curr);

(*outBuffer)[curr] = (*curString)[allowedStart];
printf("outbuff is %s\n",*outBuffer);       

combination(curString,curr+1,outBuffer,length);
    printf("return\n");
(*outBuffer)[length-1] = '\0';

   } //else
} //for 
}

 main()
 {
 char *var = "abc";
 int length = strlen(var);
 printf("length = %d\n",length);

 char *outBuffer = malloc ( length * sizeof (char));
 bzero(outBuffer,3);
 combination(&var,0,&outBuffer,length);

  }

对于初学者来说,你在这里出错了:

 char *var = "abc";
 int length = strlen(var);
 printf("length = %d\n",length);

 char *outBuffer = malloc ( length * sizeof (char));
 bzero(outBuffer,3);

这是非常混乱的代码。它混合了动态缓冲区长度处理(strlen()调用)与静态的(3 in the bzero()称呼)。它也做错了,通过使用sizeof (char)(C 语言保证其为 1,因此只会增加噪音和混乱)。另外,在 C 中保存 3 个字符的可打印字符串所需的字符数不是 3,而是 4,因为您需要一个字符来终止'\0'.

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

C 中字符串中所有可能的组合 的相关文章

随机推荐

  • 将 SAXON 9.5 (nuget) 与 Schematron 结合使用

    我正在运行这段代码 string path AppDomain CurrentDomain BaseDirectory Uri schemaUri new Uri file path sch patient sch Uri totransf
  • 是什么导致这个安全描述符变坏?

    我正在尝试使用此代码读取 Windows 中文件和目录的访问权限 模式为Tim Golden 提议对 os access 进行修补 使其能够从 Windows 上的 ACL 中读取 http bugs python org file9919
  • 如何在imageview中显示外部存储图像

    我想显示外部存储图像 例如 存储 sdcard0 image jpg 在我的安卓应用程序中 谁能指导我如何实现这一目标 如果您的图像位于 sdcard 的根文件夹中 则通过以下方式访问它 Bitmap bmp BitmapFactory d
  • 如何从 bash 的目录中选择随机文件?

    我有一个包含大约 2000 个文件的目录 我怎样才能随机选择一个样本N通过使用 bash 脚本或管道命令列表来创建文件 这是一个使用 GNU sort 的随机选项的脚本 ls sort R tail N while read file do
  • 如何在 Xcode 中创建机器人?获取“创建机器人需要一个受源代码控制的项目。”

    我正在尝试使用 OS X Server for Mavericks 在 Mavericks 中进行持续集成设置 我已经安装了服务器 并且我的源代码位于使用来自 assembla 的 Git 的本地目录中 我正在遵循 Apple Xcode
  • 文件错误地报告已修改 - git 属性有问题吗?导致回购不一致

    这很容易导致 git 存储库不一致 如果提交的文件以 crlf 行结尾且工作树中未设置文本属性 但在存储库中设置了文本属性 则该文件将错误地显示为已修改 我在 Mac Darwin 13 1 0 上使用 Git 1 8 5 重现此内容cor
  • div 底部的微妙曲线

    我正在努力实现一个微妙的曲线在我的底部 div 这是我想要实现的目标的示例图像 我试图通过这样做来实现它 section box border bottom left radius 40 border bottom right radius
  • 我再也看不到 .SVN 文件夹了?

    我最近将我的乌龟升级到了1 7版本 已经有一段时间了 我看不到 svn 文件夹 我曾经复制文件夹来复制一些代码 进入该文件夹并删除复制版本的 svn 以便它认为该代码是新的 我再也不能做这个了 有人知道发生了什么事吗 Subversion
  • NoClassDefFoundError - 无法初始化类...?

    我在编写简单的测试程序时遇到错误 package Xbee import com rapplogic xbee api XBee import com rapplogic xbee api XBeeException public clas
  • 如何使用 Node.js 加密创建 ECDSA 签名?

    以下示例中 Node 加密模块使用什么签名算法 我无法从文档 https nodejs org api crypto html cryptocreatesignalgorithm options 摘要算法是 SHA 256 但我使用的是 E
  • 如何在Intellij中生成串行版本UID

    当我使用Eclipse它有一个很好的功能来生成串行版本 UID 但是在 IntelliJ 中该怎么办呢 如何在 IntelliJ 中选择或生成相同的串行版本 UID 当修改旧类时该怎么办 如果您没有指定id 它是在运行时生成的 没有任何插件
  • 将 div 的内容底部对齐

    我有一个包含 2 个段落的 div 我希望段落与 div 的右下角对齐 我能够使用对齐段落text align right 但我正在努力尝试让段落与 div 底部对齐 标记非常简单 div p content 1 p p content 2
  • IntelliJ Idea 根据文件结构突出显示;不是文件扩展名

    我有一个小问题 项目中存在几个 conf 文件 但它们有不同的文件结构 其中一个是 XML 例如 Resin conf 另一个是 javaproperties file 有什么方法可以手动更改突出显示 或者甚至更好 自动更改突出显示类型 提
  • 为什么我的 Flink 窗口使用这么多状态?

    我的 Flink 作业的检查点变得越来越大 在深入研究各个任务后 键控窗口函数似乎负责大部分大小 我怎样才能减少这个 如果您在 Windows 中绑定了很多状态 则有几种可能性 使用增量聚合 通过使用reduce or aggregate
  • 将引用传递给引用

    我认为在 C 中传递对引用的引用是非法的 但是 当我运行此代码时 它没有给我错误 void g int y std cout lt lt y y void f int x g x int main int a 34 f a return 0
  • 从另一张 iOS 中减去一张图像

    任何人都知道如何从另一个 UIImage 中减去一个 UIImage 例如这个屏幕 感谢您的回复 我相信您可以通过使用来完成此任务kCGBlendModeDestinationOut混合模式 创建一个新的上下文 绘制背景图像 然后使用此混合
  • 验证 WPF 组合框中选定的值

    就像标题所说 我正在尝试验证我的表单 但在获取组合框值时遇到问题
  • Spark DataFrame 分区器为 None

    Spark新手 创建 DataFrame 后 我尝试根据 DataFrame 中的列对其进行分区 当我使用检查分区器时data frame rdd partitioner I get None作为输出 分区使用 gt data frame
  • 在 MySQL 服务器或 PHP 中更快地随机化许多结果

    在 MySQL 服务器上随机化大量结果的排序顺序更快还是在 PHP 中收到数据后更快 有谁有任何数据可以备份 甚至是轶事经验吗 我有根据的猜测是 MySQL 毫无疑问会获胜 它就是为了以这种方式处理数据而设计的 必须将所有数据移至 PHP
  • C 中字符串中所有可能的组合

    我正在尝试使用 C 打印字符串 abc 的所有可能组合 有人可以帮助指出我在这段代码中哪里出错了吗 我正在使用这里提到的算法 http hackercs com videos Combinations of a String Part 2