我被要求编写一个程序,给定字符串“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/