c - 给定一个字符串,将其子字符串存储在二维数组中

标签 c

我被要求编写一个程序,给定字符串“acmprog”,我应该生成并排序子字符串集。

这是我的代码:

void gen_subStrings(char a[],char sub[][100],int len){
    int i,count=2;
    char first=a[0];
    printf("%c",first);
    for(i=0;i<len-2;i++){
        strncpy(sub[i],a,count);
        printf("%s\n",sub[i]);
        count++;
    }
}

main(){
    char string[]={"acmprog"};

    int len = sizeof(string);
    char subStrings[len][100];

    gen_subStrings(string,subStrings,len);

    system("pause");
}

当我运行它时,输出如下:

 a

什么时候应该是:

a
ac
acm
acmp
acmpr
acmpro
acmprog

我做错了什么?

最佳答案

每次在字符串末尾都必须复制NULL

 for(i=0;i<len-2;i++)
 {
    strncpy(sub[j],a,count); //Use a different variable
    sub[j][count]='\0';// at end , copy NULL
    printf("%s\n",sub[j++]);
    count++;
 }

关于c - 给定一个字符串,将其子字符串存储在二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580959/

相关文章:

C While 循环问题

c++ - 我应该使用 C(99) boolean 值吗? (还有 C++ 中的 C++ boolean 值?)

C99 通过带大括号的指针初始化数组

Bradski & Kaehler 的 "Learning OpenCV"中的 const float union ptr 示例 3-9

c - 将值存储在变量中和将变量的值存储在数组中会产生不同的输出

c - 数组已填充最后一个元素

c - 读取/处理程序

C : printf with only string format as argument

检查我的矩阵是否是幻方

c - 以下 c 代码给出输出 1 2 3 4 5 。代码是如何执行的?