c - 用 C 打印字母表中所有单词的集合

标签 c

我正在尝试编写一个程序来打印字母表中所有单词的集合。这主要是一个让我习惯 C 中的字符串和指针的测试。我已经确定了一个递归解决方案,但我似乎在 strcat 中使用指针时遇到了麻烦。有什么建议说明我为什么会在这里出现段错误吗?

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

    #define DIM 26

    void print (char *);

    char alphabet[26] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
                     'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
    char word[26];


    int main(void) {
        *word = '\0';
        print(word);
        return EXIT_SUCCESS;
    }

    void print (char *word){
        for (int i = 0; i < DIM; ++i){
            strcat(word, alphabet[i]);
            printf("%c\n", word);
            print(*word);
        }
    }

最佳答案

我认为最深的概念问题是你没有基本案例。您正在构建一个无限递归树。

试试这个:

   void print (char *word){
        if (strlen(word)<5){
             for (int i = 0; i < DIM; ++i){
               strcat(word, alphabet[i]);
               printf("%c\n", word);
               print(*word);
            }
        }
    }

使用 C 语言时还有其他一些小问题,好的编译器会发现这些问题。打开警告,不要忽略它们!

关于c - 用 C 打印字母表中所有单词的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16626132/

相关文章:

c - 如何在某个字符后停止扫描输入?

c - 有和没有辅助变量的变量交换——哪个更快?

c - 这个程序是如何执行的呢?

c - 将 uint8_t* 转换为 uint32_t* 行为

c - 为什么指针值不能成为引用内存空间中对象的好标签?

c - 在一个头文件中定义结构并在另一个头文件中使用它时出现结构错误

c++ - C 或 C++ 中是否有轻量级的多部分/表单数据解析器?

c - 使全局静态变量多线程安全

c++ - 使用 sqlite 合并执行项目时的命令窗口

c - 如何检查一个二进制文件是否包含在另一个二进制文件中?